Entwurfsmuster – Fabrikmuster

Anzeigen

Das Factory-Muster ist eines der am häufigsten verwendeten Entwurfsmuster in Java. Diese Art von Entwurfsmuster fällt unter das Erstellungsmuster, da dieses Muster eine der besten Möglichkeiten zum Erstellen eines Objekts bietet.

Im Factory-Muster erstellen wir ein Objekt, ohne die Erstellungslogik dem Client zur Verfügung zu stellen, und verweisen auf das neu erstellte Muster Objekt, das eine gemeinsame Schnittstelle verwendet.

Implementierung

Wir werden eine Shape-Schnittstelle und konkrete Klassen erstellen, die die Shape-Schnittstelle implementieren. Eine Factory-Klasse ShapeFactory wird als nächster Schritt definiert.

FactoryPatternDemo, unsere Demo-Klasse verwendet ShapeFactory, um ein Shape-Objekt abzurufen. Sie übergibt Informationen (CIRCLE / RECTANGLE / SQUARE) an ShapeFactory, um den benötigten Objekttyp abzurufen.

Schritt 1

Erstellen Sie eine Schnittstelle.

Shape.java

public interface Shape { void draw();}

Schritt 2

Erstellen Sie konkrete Klassen, die dieselbe Schnittstelle implementieren.

Rectangle.java

public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle::draw() method."); }}

Square .java

public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square::draw() method."); }}

Circle.java

public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle::draw() method."); }}

Schritt 3

Erstellen Sie eine Factory, um basierend auf den angegebenen Informationen ein Objekt einer konkreten Klasse zu generieren.

ShapeFactory.java

Schritt 4

Verwenden Sie die Factory, um ein Objekt einer konkreten Klasse abzurufen, indem Sie Informationen wie den Typ übergeben.

FactoryPatternDemo.java

Schritt 5

Überprüfen Sie die Ausgabe.

Inside Circle::draw() method.Inside Rectangle::draw() method.Inside Square::draw() method.
Anzeigen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.