# data[].attributes.body
- Erzeugungsmuster in der objektorientierten Programmierung
- Mehrfache Anwendung des Musters "Fabrikmethode"
- Zusammenhängende Produkte/Klassen werden definiert
- Code für die Instanziierung von Objekten in Factory-Klassen ausgelagert, diese implementieren ein gemeinsames Abstract-Factory Interface
- Client kennt nur das Interface, nicht die konkrete Implementierung der Factory -> Entkopplung von Implementierungsdetails

# data[].attributes.body
1. Unterscheidung der vorhandenen Produkttypen und derer Varianten

2. Erstellung abstrakter Interfaces aller Produkttypen

1. Alle konkreten Produkte implementieren dieses Interface

3. Implementierung der Methoden zum Erstellen der Produkte in Interface Abstract-Factory

4. Implementierung der Klassen für konkrete Factories für alle Produkttypen

5. Initialisierung der konkreten Factory-Klassen in der Anwendung (Client)

# data[].attributes.body
Konsistenz

Es gelangen nur Objekte zum Client, die zusammenpassen

Flexibilität

Objektfamilien können einfach ausgetauscht werden

Erweiterbarkeit der Produktsets

durch implementierung neuer Factories

Wiederverwendbarkeit

Verschlankung / Vereinfachung des Codes

# data[].attributes.body
Unflexibel hinsichtlich Produkten in Produktsets

Änderungen an Abstract-Factory notwendig

Konkrete Factories müssen angepasst werden

-> Großer Aufwand