Das Konzept des einfachen Factory-Musters
besteht darin, eine Factory-Klasse einzurichten, um Instanzen einiger Klassen zu erstellen, die dieselbe Schnittstelle implementieren. Der Kern des einfachen Factory-Musters besteht darin, dass eine Factory-Klasse anhand der eingehenden Parameter dynamisch bestimmt, welche Instanz der Produktklasse (diese Produktklassen erben von einer übergeordneten Klasse oder Schnittstelle) erstellt werden soll.
UML-Diagramm eines einfachen Fabrikmusters
Einfacher Fabrikmustercode
Als ich das einfache Fabrikmuster lernte, verwendete ich dort einen Menschen sind relevante Beispiele. Menschen werden auf der Welt in Männer und Frauen unterteilt. Definieren Sie zunächst eine abstrakte Schnittstelle für menschliche Produkte
/** * This is factory patter package */ package com.roc.factory; /** * 产品的抽象接口 人类 * @author liaowp * */ public interface Human { public void say(); }
und definieren Sie dann Männer und Frauen , beides ist die gleiche Art zu sprechen.
/** * This is factory patter package */ package com.roc.factory; /** * man 男人 * @author liaowp * */ public class Man implements Human { /* say method * @see com.roc.factory.Human#say() */ @Override public void say() { System.out.println("男人"); } }
/** * This is factory patter package */ package com.roc.factory; /**女人 * @author liaowp * */ public class Woman implements Human { /* say method * @see com.roc.factory.Human#say() */ @Override public void say() { System.out.println("女人"); } }
Schreiben Sie endlich eine Fabrikklasse, um Männer und Frauen zu erschaffen. Der erste Weg besteht darin, logisches Urteilsvermögen zu verwenden.
package com.roc.factory; /** * 简单工厂 * @author liaowp * */ public class SampleFactory { public static Human makeHuman(String type){ if(type.equals("man")){ Human man = new Man(); return man; }else if(type.equals("womman")){ Human woman = new Woman(); return woman; }else{ System.out.println("生产不出来"); return null; } } }
Die zweite Möglichkeit besteht darin, die Strahlung von Java zu verwenden. Ich denke, diese Art der Implementierung ist besser.
package com.roc.factory; /** * 简单工厂放射实现 * @author liaowp * */ public class SampleFactory1 { public static Human makeHuman(Class c){ Human human = null; try { human = (Human) Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block System.out.println("不支持抽象类或接口"); e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("没有足够权限,即不能访问私有对象"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("类不存在"); e.printStackTrace(); } return human; } }
Der letzte ist der Client-Code
package com.roc.factory; /** * 简单工厂测试 * @author liaowp * */ public class Client { public static void main(String[] args) { // Human man = SampleFactory.makeHuman("man"); // man.say(); // Human womman = SampleFactory.makeHuman("womman"); // womman.say(); // Human test = SampleFactory.makeHuman("tttt"); Human man = SampleFactory1.makeHuman(Man.class); man.say(); Human woman = SampleFactory1.makeHuman(Woman.class); woman.say(); } }
Einfaches Anwendungsszenario im Fabrikmodus
Vorteile: Die Factory-Klasse ist der Schlüssel zum gesamten Muster. Sie enthält die notwendige logische Beurteilung, um zu bestimmen, welche spezifische Klasse von Objekten basierend auf den von der Außenwelt bereitgestellten Informationen erstellt werden soll Befreien Sie sich von der peinlichen Situation, bestimmte Produktobjekte direkt zu erstellen. Sie müssen nur noch für den „Verbrauch“ des Objekts verantwortlich sein. Es spielt keine Rolle, wie diese Objekte erstellt und organisiert werden. Die Klärung der jeweiligen Verantwortlichkeiten und Rechte trägt zur Optimierung der gesamten Softwarearchitektur bei.
Nachteile: Da die Fabrikklasse die Erstellungslogik aller Instanzen konzentriert, verstößt sie gegen das Prinzip der Verantwortungszuweisung mit hoher Kohäsion und konzentriert die gesamte Erstellungslogik in einer Fabrikklasse Im Vorfeld wurde berücksichtigt, dass die Factory-Klasse geändert werden muss, wenn eine neue Klasse hinzugefügt werden muss. Wenn die Anzahl spezifischer Produktkategorien im System weiter zunimmt, muss die Factory-Klasse möglicherweise unterschiedliche Instanzen entsprechend unterschiedlichen Bedingungen erstellen. Diese Art der Beurteilung von Bedingungen und die Beurteilung bestimmter Produkttypen sind miteinander verflochten, was es schwierig macht, die Verbreitung von Modulfunktionen zu vermeiden, und sich sehr nachteilig auf die Wartung und Erweiterung des Systems auswirkt.
Das oben Genannte ist das Ganze Ich hoffe, dass der Inhalt dieses Artikels für alle hilfreich ist. Das Lernen ist hilfreich und ich hoffe, dass jeder die chinesische PHP-Website unterstützt.
Weitere Artikel zur kurzen Einführung in einfache Fabrikmuster in Java-Designmuster finden Sie auf der chinesischen PHP-Website!