Definition von Fabrikmethodenmuster
Die Bedeutung des Fabrikmethodemusters besteht darin, eine Werksoberfläche zum Erstellen von Produktobjekten zu definieren und die tatsächlichen Erstellungsarbeiten in Unterklassen zu verschieben. Die Kernfabrikklasse ist nicht mehr für die Produkterstellung verantwortlich, so dass die Kernklasse zu einer abstrakten Fabrikrolle wird und nur für die Schnittstellen verantwortlich ist, die von bestimmten Fabrikunterklassen implementiert werden müssen. Der Vorteil einer weiteren Abstraktion besteht darin, dass das Factory -Methode -Modell das System ermöglichen kann, neue Produkte einzuführen, ohne die spezifische Fabrikrolle zu ändern.
Es enthält die folgenden Rollen:
UML -Klassendiagramm des Musters
Beispiel
Angenommen, es gibt drei Nachfüllungen, nämlich rote Nachfüllungen, blaue Nachfüllungen und schwarze Nachfüllungen. Benutzer hoffen, Kugelschreiber zu verwenden, um die Farbe der Nachfüllung zu klären.
Beschreibung und Verwendung der Struktur des Musters
1. Zusammenfassung Produkt: Pencore.java
public abstract Class Pencore {String Color; public abstraktes void schreibwort (string s);} 2. Spezifisches Produkt (Beton -Produkt) _1: redpencore.java
öffentliche Klasse Redpencore erweitert Pencore {redpencore () {color = "rot"; } public void writewort (string s) {system.out.println ("schreiben Sie das Wort"+color+":"+s); }} Spezifisches Produkt (Betonprodukt) _2: Bluepencore.java
öffentliche Klasse Bluepencore erweitert Pencore {bluepencore () {color = "blau"; } public void writewort (string s) {system.out.println ("schreiben Sie das Wort"+color+":"+s); }} Spezifisches Produkt (Konkreteprodukt) _3: Blackpencore.java
öffentliche Klasse Blackpencore erweitert Pencore {Blackpencore () {color = "schwarz"; } public void writewort (string s) {system.out.println ("schreiben Sie das Wort"+color+":"+s); }} 3. Konstruktor: Ballpen.java
public abstract Class Ballpen {ballpen () {System.out.println ("produziert einen Kugelschreiber mit"+getPencore (). Color+"Refill Core"); } public abstract Pencore getPencore (); // Factory -Methode} 4. ConcreTecreator:
Redballpen.javapublic Class Redballpen erweitert Ballpen {public Pencore getPencore () {return New Redpencore (); }} Blueballpen.javapublic class Blueballpen erweitert Ballpen {public Pencore getPencore () {return New BluePencore (); }} BlackballPen.javapublic Class Blackballpen erweitert Ballpen {public Pencore getPencore () {return New Blackpencore (); }} 5. application.java
öffentliche Klasse Anwendung {public static void main (String args []) {Pencore Pencore; Ballpen -Ballpen = neuer Blueballpen (); Pencore = ballpen.getPencore (); Pencore.Writeword ("Hallo, ich bin froh, dich zu kennen"); BALLPEN = New RedballPen (); Pencore = ballpen.getPencore (); Pencore.Writeword ("Wie geht es dir"); ballpen = neuer Blackballpen (); Pencore = ballpen.getPencore (); Pencore.Writeword ("Schön dich zu treffen"); }} Zusammenfassen
Das Factory -Method -Muster gehört zum Erstellungsmuster der Klasse. Im Werksmodus -Modus ist die übergeordnete Klasse der Werksklasse für die Definition der öffentlichen Schnittstelle zum Erstellen von Produktobjekten verantwortlich, während die Fabrik -Unterklasse für die Generierung spezifischer Produktobjekte verantwortlich ist. Der Zweck davon ist, den Instanziierungsbetrieb der Produktklasse in die Fabrikunterklasse zu verzögern, dh zu bestimmen, welche spezifische Produktklasse über die Fabrik -Unterklasse instanziiert werden soll.
Das Factory -Method -Modell ist eine weitere Abstraktion und Förderung des einfachen Fabrikmodells. Aufgrund der Verwendung von objektorientiertem Polymorphismus behält das Fabrikmethodenmuster die Vorteile eines einfachen Fabrikmusters bei und überwindet seine Nachteile. Im Fabrikmethodemodell ist die Kernfabrikklasse nicht mehr für die Schaffung aller Produkte verantwortlich, sondern gibt der Unterklasse die spezifische Erstellungsarbeit. Diese Kernklasse ist nur dafür verantwortlich, die Schnittstellen zu geben, die die spezifische Fabrik implementieren muss, jedoch nicht die Details der Instanziierung der Produktklasse. Auf diese Weise kann das Factory -Methode -Modell das System ermöglichen, neue Produkte einzuführen, ohne die Fabrikrolle zu ändern. Der Hauptvorteil des Fabrikmethodemodells besteht darin, dass es beim Hinzufügen neuer Produktklassen das vorhandene System nicht ändern muss und die Erstellungsdetails des Produktobjekts verkauft. Das System hat eine gute Flexibilität und Skalierbarkeit. Der Nachteil besteht darin, dass das Hinzufügen neuer Fabriken beim Hinzufügen neuer Produkte erforderlich ist, was zu Paaren von Systemklassen führt, was die Komplexität des Systems bis zu einem gewissen Grad erhöht.