[Study Note] Patterns in Practice 20100403
Responsibility-Driven Design
CRC Cards, Class or Candidate/Responsibility/Collaborators
Responsibility-Driven Design (RDD)
Objects are not just simple bundles of logic and data. They are responsible members of an object community.
Stereotype | Description |
Information Holder | Knows things and provides information. May make calculations from the data that it holds. |
Structurer | Knows the relationships between other objects. |
Controller | Controls and directs the actions of other objects. Decides what other objects should do. |
Coordinator | Reacts to events and relays the events to other objects. |
Service Provider | Does a service for other objects upon request. |
Interfacer | Objects that provide a means to communicate with other parts of the system, external systems or infrastructure, or end users. |
Information Holder
Money pattern/Whole Value
The entity and value objects in a rich domain model are a common example of information holders.
designing around behavior rather than designing from a data-centric viewpoint.
Structurer
The job of a structure is to track, store, and maintain relationships between objects.
Dictionary<T, U>
keep the structurer’s responsibility completely separate from the business processes that consume the objects held by the structure.
Service Provider
A service provider knows how to perform a task on behalf of another object, but it’s generally passive while it waits to be activated by some other class.
Interfacer
Facade pattern
The interfacer role is effectivel a mediator used to simplify communication with another system or subsystem.
Coordinator
A coordinator reacts to events and relays commands to other objects.
Controller
A controller object directs the actions of other classes. A controller is differentiated from a coordinator by the level of control.
Using Object Role Stereotypes Effectively