Konzept des einfachen Fabrikmusters
Es soll eine Fabrikklasse erstellt und Instanzen einiger Klassen erstellt, die dieselbe Schnittstelle implementieren. Das Wesentliche eines einfachen Fabrikmusters besteht darin, dass eine Fabrikklasse dynamisch bestimmt, welche Instanz der Produktklasse (diese Produktklassen von einer übergeordneten Klasse oder Schnittstelle erben) basierend auf den eingehenden Parametern erstellt werden sollten.
UML -Diagramm des einfachen Fabrikmodus
Einfacher Werksmustercode
Als ich das einfache Fabrikmodell lernte, habe ich ein Beispiel mit Menschen verwendet. Menschen sind in Männer und Frauen auf der Welt unterteilt und definieren zunächst eine abstrakte Schnittstelle für menschliche Produkte.
/** * Dies ist Werksmusterpaket */Paket com.roc.factory;/** * Abstract -Schnittstelle des Produkts menschlich * @author liaowp * */public interface Human {public void say ();}Dann haben sowohl Männer als auch Frauen Möglichkeiten zu sprechen.
/** * Dies ist Werksmusterpaket */Paket com.roc.factory;/** man Man Man * @author liaowp * * */public class Man implementiert menschliche {/ * Say -Methode * @see com.roc.factory.human#Say () */@Override public void Says () {system.println ("Man); }} /** * Dies ist Werksmusterpaket */Paket com.roc.factory;/** woman * @author liaowp * */public class woman implementiert mensch {/ * say methode * @see com.roc.factory.human#Say () */@override public void Says () {).Out.println ("Frau"); }}Schreiben Sie schließlich eine Fabrikklasse, um Männer und Frauen zu kreieren. Die erste Methode wird unter Verwendung des logischen Urteils erreicht.
Paket com.roc.factory;/** * Einfache Fabrik * @Author liaowp * */public class SampleFactory {public static Human Makehuman (String Typ) {if (type.equals ("Man") {Human Man = New Man (); Rückkehrer; } else if (type.equals ("Womman") {Human Woman = New Woman (); Rückkehrfrau; } else {System.out.println ("kann nicht produzieren"); null zurückkehren; }}}Die zweite Methode besteht darin, Java -Strahlung zu verwenden, um sie zu implementieren. Ich denke, diese Art der Implementierung ist besser.
Paket com.roc.factory;/** * Einfache Implementierung der Fabrikstrahlung * @Author liaowp * */public class SampleFactory1 {public static Human Makehuman (Klasse C) {Human Human = null; try {human = (human) class.forname (C.GetName ()). newInstance (); } catch (InstantiationException e) {// Todo automatisch erzeugte Catch block System.out.println ("Abstract-Klassen oder Schnittstellen werden nicht unterstützt"); E. printstacktrace (); } catch (illegalAccessException e) {// Todo automatisch generierter Fangblock E. printstacktrace (); System.out.println ("Keine ausreichenden Berechtigungen, dh auf private Objekte können nicht zugegriffen werden"); } catch (classNotFoundException e) {// Todo automatisch erzeugte Catch block System.out.println ("classnot existiert"); E. printstacktrace (); } Return Human; }}Schließlich der Code des Clients
Paket com.roc.factory;/** * Einfacher Werkstest * @Author liaowp * */Public Class Client {public static void main (String [] args) {// menschlicher Mann = probefaktorisch. SampleFactory.Makehuman ("tttt"); Menschlicher Mann = SampleFactory1.Makehuman (MAN.CLASS); Man.Say (); Menschliche Frau = SampleFactory1.Makehuman (Frau.Class); Frau.Say (); }} Einfaches Anwendungsszenario der Werksmodus
Vorteile: Die Fabrikklasse ist der Schlüssel zum gesamten Modell. Es enthält die erforderlichen logischen Urteile und bestimmt, welches bestimmte Klassenobjekt basierend auf den von der externen Welt angegebenen Informationen erstellt werden sollte. Durch die Nutzung der Fabrikklasse kann die Außenwelt die peinliche Situation, die direkte Produktobjekte direkt erstellen, loswerden und nur für "Konsum" verantwortlich sein. Es spielt keine Rolle, wie diese Objekte erstellt und organisiert werden. Ihre jeweiligen Verantwortlichkeiten und Rechte werden geklärt, was der Optimierung der gesamten Softwarearchitektur förderlich ist.
Nachteile: Da die Fabrikklasse die Erstellungslogik aller Fälle konzentriert, verstößt sie gegen das Prinzip einer hohen, kohärenten Verantwortungszuweisung, die gesamte Schöpfungslogik konzentriert sich auf eine Fabrikklasse. Die Klassen, die es erstellen kann, können nur im Voraus berücksichtigt werden. Wenn eine neue Klasse hinzugefügt werden muss, muss die Fabrikklasse geändert werden. Da die Anzahl der spezifischen Produktkategorien im System weiter zunimmt, kann die Fabrikklassen nach unterschiedlichen Bedingungen unterschiedliche Instanzen erfordern. Dieses Urteil über die Bedingungen und die Beurteilung spezifischer Produkttypen sind miteinander verbunden, was es schwierig macht, die Ausbreitung von Modulfunktionen zu vermeiden, was für die Wartung und Ausdehnung der Systeme sehr ungünstig ist.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.