A contract or obligation of a class.
A measure of how closely related the elements in a module are.
Creator helps decide which class should be responsible forcreating instancesof another class.
Information Expert assigns a responsibility to the class that has theinformation neededto carry it out.
Controller helps decide which class should be responsible forhandling user interface events and initiating system operations.
Low Coupling guides you inminimizing dependencies between classeswhen assigning responsibilities.
High Cohesion helps you assesshow closely related the elements inside a class arewhen assigning responsibilities.
Pure Fabrication suggests creating a class to take on a responsibilitywhen no existing class is a good fit.
Polymorphism guides you in assigning responsibility forbehavior that varies by object type.
Indirection guides you inminimizing direct interaction between classes.
Protected Variations guides you inprotecting parts of the system from changes elsewhere.

