Klaus Schultz  Reverse- & Software-Engineering


 

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