Foundational Patterns
3: Class Replacement
4: Special
Class Factory
5: Property
Container
"Provide a flexible means to dynamically extend an
instance of a business object with attributes or relationships to other business
objects."
Ein solches Attribut bzw. eine solche Beziehung heisst "Property"
und wird unter Verzicht auf strenge Typisierung in einem Containter an das
Business Object gehängt.
6: Business Process
Command
"Provide an extensible mechanism for encapsulating a
business process supported by a logicaal business object or subsystem that is
implemented as multiple physical Objects".
Dies ist eine spezielle Ausprägung
des Command-Patterns in [Gamma95].
Behavioral
Patterns
7: Simple Policy
"Define a family of algorthms,
encapsulate each one, and make them interchangeable. This pattern is similar to
the Strategy Pattern in [Gamma
95]."
8: Chain of Responsibility-Driven
Policy
9: Token-Driven
Policy
Structural Patterns
10: Controller
11: Key/Keyable
12: Generic
Interface
Process Patterns
13: Cached Aggregate
14: Keyed Attribute Retrieval
15: List
Generation
Dynamic Behavioral
Patterns
16: Extensible Item
"Allow an object to support
dynamic changes in behavior and data. The mechanisms defined by this pattern
include adding, removing, or overriding supported methods and adding or removing
data attributes as necessary to model a business object correctly at different
stages of its existence."
Dieses Pattern ist weniger mit dem state-Pattern in
[Gamma95] vergleichbar, als mit einem Rollen-Pattern. Natürlich sind die
Extensionen/Rollen eigene Objekte, aber in diesem Pattern werden die Methoden
der Extensionen über das Kernobjekt (z.B. ein Personen-Objekt) aufgerufen, mit
Hilfe der generischen Methode invokeMethod(
String methodname, Object[]
parameterList).
17: Hierarchical Extensible
Item
"Provide a flexible, loosely coupled mechanism for
arranging business objects in a tree structrure that naturally reflects the
structure and behavior of hierarchies of entities found in many business
domains."
Beispiel ist eine Organisationsstruktur
Firma/Bereich/Abteilung/Gruppe/Person.
Das Pattern baut auf (16) auf und
schleust ein invokeMethod nach oben oder unten durch die
Hierarchie-Ebenen.
18: Business Entity
Lifecycle
"Allow a business object to accurately model the
various lifecycle paths of the business entity it represents through a decoupled
and configurable state management mechanism. State and behoavioral changes in
the modeled business entity that occur at each stage of its lifecycle are
reflected in the associated business object by runtime changes to the object's
behavior and data."
Beispiel ist ein Auftrag. Je nachdem, ob es ein
Direktauftrag oder ein Remote-Auftrag ist, hat der Auftrag verschiedene
Teilprozesse zu durchlaufen, wobei aber die einzelnen Teilprozesse wie "Picken"
oder "Rechnungsschreibung" durchaus gleich sind. Bei einem Remote-Auftrag ist
die "Auslieferung" als Teiprozess enthalten, bei einem Direktauftrag
nicht.
Für jeden Zustand/Teilprozess weist der Auftrag verschiedene
Behavior & Daten auf. Dies wird mit dem Pattern ExtensibleItem (16)
realisiert, d.h. das Lifecycle Pattern baut auf dem ExtensibleItem (16) Pattern
auf.
19: Hierarchy
Information
20: Decoupled
Processes