Five principles for maintainable object-oriented design.

Contains core domain concepts and rules.

Layer protecting one model from another.

Reads immediately reflect completed writes.

Trying many possible credentials or values.

Reusable solution for system organization.

Architecture emphasizing independent business logic.

Creates objects by cloning existing objects.

Trying words from a prepared list.

Reusable solution to a common design problem.