Was ist der Unterschied zwischen Fabrikmuster und abstraktem Fabrikmuster?

Das Hauptunterschied zwischen Fabrikmuster und abstraktem Fabrikmuster ist das Factory Pattern bietet eine Methode zum Erstellen von Objekten, ohne die genaue Klasse anzugeben, mit der es erstellt wurde. Das abstrakte Factory-Muster bietet eine Methode zum Kombinieren einer Gruppe einzelner Fabriken, ohne deren konkrete Klassen anzugeben.

Entwurfsmuster sind die Lösungen für allgemeine Probleme, mit denen Softwareentwickler bei der Entwicklung von Software konfrontiert sind. Sie sind generisch und hängen nicht vom Systemtyp oder der Programmiersprache ab. Darüber hinaus sind sie bewährte Lösungen und liefern Best Practices. Es gibt drei Arten von Entwurfsmustern: Kreation, Struktur und Verhalten. Kreationsmuster bieten eine Methode zum Erstellen von Objekten, während die Kreationslogik ausgeblendet wird. Darüber hinaus machen sie das Programm flexibler. Fabrikmuster und abstraktes Fabrikmuster sind zwei solcher kreativen Designmuster.

Wichtige Bereiche

1. Was ist Fabrik Muster
     - Definition, Funktionalität
2. Was ist abstraktes Fabrikmuster?
     - Definition, Funktionalität
3. Was ist der Unterschied zwischen Fabrikmuster und abstraktem Fabrikmuster?
     - Vergleich der wichtigsten Unterschiede

Schlüsselbegriffe

Abstraktes Fabrikmuster, Fabrikmuster

Was ist Fabrik Muster

Ein Fabrikmuster bietet eine gute Methode zum Erstellen von Objekten. Mit dieser Methode kann der Programmierer Objekte erstellen, ohne die Erzeugungslogik freizulegen. Es ist auch möglich, das neu erstellte Objekt über eine gemeinsame Schnittstelle zu referenzieren. Siehe unter Programm.

Abbildung 1: Shape Interface

Abbildung 2: Rechteckklasse

Abbildung 3: Quadratische Klasse

Abbildung 4: Kreisklasse

Abbildung 5: ShapeFactory-Klasse

Abbildung 6: Hauptklasse

Die Shape-Schnittstelle verfügt über eine abstrakte Methode, die als draw bezeichnet wird. Rechteck, Quadrat und Kreis sind Klassen. Sie implementieren Shape-Schnittstelle. Daher bieten diese Klassen eine Implementierung für die Methodenauslosung. Die Draw-Methode in jeder Klasse hat ihre eigene Implementierung. Die ShapeFacotry-Klasse hat eine Methode namens getShape. Es bekommt eine Schnur. Diese Methode gibt ein Objekt entsprechend der empfangenen Zeichenfolge zurück.

In der Hauptmethode gibt es ein Objekt namens Shape. Es ist vom Typ ShapeFactory. Die getShape-Methode wird mit diesem Objekt aufgerufen. Der String "Rectangle" wird an ihn übergeben. Das zurückkehrende Objekt wird in shape1 gespeichert, die vom Typ Shape ist. Ebenso werden die Zeichenfolgen "SQUARE" und "CIRCLE" an getShape übergeben. Die Rückkehrobjekte werden in shape2 und shape3 gespeichert. Jedes Objekt ruft die draw-Methode auf, und die entsprechende draw-Methode wird entsprechend der übergebenen Zeichenfolge ausgeführt.

Das Hauptprogramm verwendet die ShapeFactory-Klasse, um ein Shape-Objekt abzurufen. Es übergibt die erforderliche Zeichenfolge an ShapeFactory, um den Objekttyp zu erhalten, den es benötigt.

Was ist abstraktes Fabrikmuster?

Abstract Factory Pattern verwendet eine Superfabrik und erstellt weitere Fabriken. Es ist auch als bekannt Fabrik der Fabriken. In diesem Muster erstellt eine Schnittstelle eine Factory aus verwandten Objekten, ohne deren Klassen explizit anzugeben. Mit anderen Worten, nachdem die Superfabrik erstellt wurde, können andere Fabriken erstellt werden. Siehe unter Programm.

Abbildung 7: Farbschnittstelle

Abbildung 8: Gelbe Klasse

Abbildung 9: Orange Klasse

Abbildung 10: Violette Klasse

Abbildung 11: AbstractFactory-Klasse

Abbildung 12: ShapeFactory-Klasse

Abbildung 13: ColorFactory-Klasse

Abbildung 14: FactoryProducer-Klasse

Abbildung 15: Hauptprogramm

Interface Shape und die Klassen Rechteck, Quadrat, Kreis sind die gleichen wie im vorherigen Abschnitt. Die Farbe ist eine Schnittstelle; es hat eine abstrakte Methode namens fill. Die Klassen Gelb, Orange und Lila implementieren diese Schnittstelle. Daher stellen diese Klassen eine Implementierung für die Füllmethode bereit. Die AbstrcatFactory-Klasse verfügt über zwei Methoden wie getShape und getColor. Die ShapeFactory-Klasse erweitert AbstractFacotry. In ähnlicher Weise erweitert die ColorFactory-Klasse AbstractFactory. Diese Klassen verfügen über Implementierungen für die Methoden getShape und getColor.

Die FactoryProducer-Klasse hat eine Methode namens getFactory, die ein Objekt vom Typ AbstractFactory zurückgibt. Es gibt ein ShapeFactory-Objekt oder ein ColorFactory-Objekt oder null zurück, abhängig von der Zeichenfolge, die er erhält. Schließlich verwendet die Hauptmethode den FactoryProducer, um AbstractFactory dazu zu bringen, Fabriken konkreter Klassen zu erhalten.

Außerdem verwendet die Hauptmethode FactoryProducer, um ein AbstractFactory-Objekt abzurufen. Es übergibt Informationen wie "RECTANGLE", "SQUARE", "CIRCLE" an AbstractFactory, um den Objekttyp zu erhalten, den es benötigt. Außerdem werden Informationen wie "GELB", "ORANGLE" und "PURPLE" weitergeleitet, um den Objekttyp zu erhalten, den es benötigt. 

Unterschied zwischen Fabrikmuster und abstraktem Fabrikmuster

Definition

Factory-Muster ist ein kreatives Muster, das eine Methode verwendet, um mit dem Problem der Erstellung von Objekten umzugehen, ohne die genaue Klasse des Objekts angeben zu müssen, das erstellt wird. Das abstrakte Fabrikmuster dagegen ist ein kreatives Muster, das eine Möglichkeit bietet, eine Gruppe einzelner Fabriken, die ein gemeinsames Thema haben, zu kapseln, ohne ihre konkreten Klassen anzugeben. Somit erklären diese Definitionen den Hauptunterschied zwischen Fabrikmuster und abstraktem Fabrikmuster.

Die Konstruktion verstecken

Ein weiterer Unterschied zwischen dem Fabrikmuster und dem abstrakten Fabrikmuster besteht darin, dass das Fabrikmuster die Konstruktion eines einzelnen Objekts verbirgt, während das abstrakte Fabrikmuster die Konstruktion einer Familie verwandter Objekte verbirgt.

Fazit

Factory Pattern und Abstract Factory Pattern sind zwei kreative Designmuster. Factory Pattern bietet eine Methode zum Erstellen von Objekten, ohne die genaue Klasse anzugeben, in der es erstellt wurde. Im Gegensatz dazu bietet das abstrakte Fabrikmuster eine Methode zum Kombinieren einer Gruppe einzelner Fabriken, ohne deren konkrete Klassen anzugeben. Daher ist dies der Hauptunterschied zwischen dem Fabrikmuster und dem abstrakten Fabrikmuster.

Referenz:

1. "Factory Method Design Pattern". Javatpoint, hier verfügbar.
2. „Abstraktes Fabrikmuster“. Javatpoint, hier verfügbar.