Information Expert: Class has the information to fulfill its responsibilities
Creator
Controller: Which object will receive and coordinate system operations
Low Coupling: Reduce impact of change
High Cohesion: Keep object focused, understandable and manageable to support low coupling
Polymorphism
Pure Fabrication: Assign a highly cohesive set of responsibilities to an artificial class that does not represent a problem domain concept to support high cohesion low coupling and reuse.
Indirection: Avoid direct coupling and assign responsibilities to an intermediate object
Protected Variations: Identify point of predicted variation or instability assign responsibilities to create a stable interface around them