- Wie unterscheiden sich diese drei Muster voneinander?
Factory: Erstellt Objekte, ohne die Instanziierungslogik dem Client zur Verfügung zu stellen.
Factory-Methode: Definieren Sie eine Schnittstelle zum Erstellen eines Objekts, lassen Sie jedoch die Unterklassen entscheiden, welche Klasse instanziiert werden soll. Mit der Factory-Methode kann eine Klasse die Instanziierung auf Unterklassen verschieben
Abstract Factory: Bietet eine Schnittstelle zum Erstellen von Familien verwandter oder abhängiger Objekte, ohne deren konkrete Klassen anzugeben.
Das AbstractFactory- Muster verwendet die Komposition, um die Verantwortung für das Erstellen eines Objekts an eine andere Klasse zu delegieren, während das Entwurfsmuster der Factory-Methode die Vererbung verwendet und zum Erstellen des Objekts auf abgeleiteten Klassen oder Unterklassen basiert
- Wann welche verwenden?
Factory: Der Kunde benötigt nur eine Klasse und kümmert sich nicht darum, welche konkrete Implementierung er erhält.
Factory-Methode: Der Client weiß nicht, welche konkreten Klassen zur Laufzeit erstellt werden müssen, sondern möchte nur eine Klasse erhalten, die die Aufgabe übernimmt.
AbstactFactory: Wenn Ihr System mehrere Produktfamilien erstellen muss oder Sie eine Produktbibliothek bereitstellen möchten, ohne die Implementierungsdetails offenzulegen.
Abstract Factory-Klassen werden häufig mit der Factory-Methode implementiert. Factory-Methoden werden normalerweise in Template-Methoden aufgerufen.
- Und wenn möglich auch Java-Beispiele zu diesen Mustern?
Factory und FactoryMethod
Absicht:
Definieren Sie eine Schnittstelle zum Erstellen eines Objekts, lassen Sie jedoch Unterklassen entscheiden, welche Klasse instanziiert werden soll. Mit der Factory-Methode kann eine Klasse die Instanziierung auf Unterklassen verschieben.
UML-Diagramm :
Produkt: Definiert eine Schnittstelle der Objekte, die die Factory-Methode erstellt.
ConcreteProduct: Implementiert die Produktschnittstelle
Ersteller: Deklariert die Factory-Methode
ConcreateCreator: Implementiert die Factory-Methode, um eine Instanz eines ConcreteProduct zurückzugeben
Problemstellung: Erstellen Sie eine Factory of Games mithilfe von Factory-Methoden, die die Spieloberfläche definieren.
Code-Auszug:
Fabrikmuster. Wann werden Werksmethoden angewendet?
Vergleich mit anderen Schöpfungsmustern:
Das Design beginnt mit der Factory-Methode (weniger kompliziert, anpassbarer, Unterklassen vermehren sich) und entwickelt sich zu Abstract Factory, Prototype oder Builder (flexibler, komplexer), wenn der Designer feststellt, wo mehr Flexibilität erforderlich ist
Abstract Factory- Klassen werden häufig mit Factory-Methoden implementiert , können jedoch auch mit Prototype implementiert werden
Referenzen zur weiteren Lektüre: Sourcemaking Design-Patterns