Object Roles

Philipp K. Janert
Data Object (Information Holder)
Mostly data, little behaviour. Often a straight domain object.
Container (Structurer)
Little state and behaviour of its own. Main purpose is to bundle several other (data) objects. Often a straight domain object.
Manager (Controller, Coordinator)
Organizes communication/collaboration/workflow amongst other objects. Listens to and dispatches events. Replaces multi-lateral object relationships with bi-lateral ones.
Relationship
Promotes relationship between objects to first-rate abstraction. For relationships with constraints or requiring simultaneous actions.
Functor (Operator)
Promote operation to first-rate abstraction. Package a capability as object, so that it can be passed as argument (and may maintain state).
Gateway (Interfacer)
Encapsulates distinct parts of the overall system. Transforms/translates requests and information as required.
Service Provider
Performs work (e.g. computation, retrieval, remote or real-world communication).
Factory
Creates objects.