Einfacher Werksmodus
Klassendiagramm
Erstellen Sie entsprechende Objekte mit einer Bedingung über eine Fabrikklasse
// Geschäftsfunktionen öffentliche Schnittstelle Icalculation {double getResult (double numa, double Numb); } public class calcadd implementiert icalculation {@Override public double getResult (double numa, double numb) {System.out.println ("add"); return numa + taub; }} öffentliche Klasse calcSubtract implementiert icalculation {@Override public double getResult (double numa, double Numb) {System.out.println ("Subtraktion"); return numa - numb; }}/** Der einfache Fabrikmodus konzentriert sich auf: Objekterstellung* Erstellen Sie eine Fabrikklasse, um Instanzen einiger Klassen zu erstellen, die dieselbe Schnittstelle implementieren oder Vererbungsbeziehungen aufweisen String Operation = "+"; // String Operation = "-"; // String Operation = "*"; double numa = 182, Numb = 33; ICalculation createCalc = calcSimpleFactory.CreateCalc (Operation); double result = createCalc.getResult (numa, numb); System.out.println (Ergebnis); }} Die Defekte einer einfachen Fabrik: Wenn eine einfache Fabrik ein Produkt erstellt, müssen die entsprechenden Parameter bestehen. Wenn der Pass falsch ist, kann das Objekt nicht abgerufen werden.
Verbesserung: Erstellen Sie verschiedene Produktkategorien auf verschiedene Weise
öffentliche Klasse CalcMultipleFactory {public static icalculation propreaseadd () {return New CalcAdd (); } public static icalculation producsSubract () {return New CalcSubtract (); } public static icalculation producteMultiply () {return New CalcMultiply (); } public static icalculation producedIveride () {return New CalcDivide (); }} public class test4Multiple {public static void main (String [] args) {double numa = 182, numb = 33; ICalculation createCalc = calcMultipleFactory.ProDoceadd (); double result = createCalc.getResult (numa, numb); System.out.println (Ergebnis); createCalc = calcMultipleFactory.Producesubract (); result = createCalc.getResult (numa, numb); System.out.println (Ergebnis); createCalc = calcMultipleFactory.Producesubract (); result = createCalc.getResult (numa, numb); System.out.println (Ergebnis); createCalc = calcMultipleFactory.Producemultiply (); result = createCalc.getResult (numa, numb); System.out.println (Ergebnis); createCalc = calcMultipleFactory.producucucuciNIDE (); result = createCalc.getResult (numa, numb); System.out.println (Ergebnis); }} Abstraktes Fabrikmuster
Es enthält mehrere Konzepte: abstrakte Fabrik, physische Fabrik, abstraktes Produkt, Physikalisches Produkt Abstract Factory: Definieren Sie die abstrakte Methode zur Erstellung von Produkten. Entity Factory: Spezifisches Produkt Abstrakter Produkterstellung: Eine Schnittstelle oder Basisklassen Entität Produkt: Implementieren Sie spezifische Funktionen oder abgeleitete Klassendiagramme
// Abstract Product1 Public Interface iProduct1 {public void show (); } // Abstract Product2 public interface iProduct2 {public void show (); } // Entity Product1 Public Class Product1 implementiert IPRODUCT1 {public void show () {System.out.println ("erstellt Typ 1 produkt"); }} // Entity Product2 Public Class Product2 implementiert IPRODUCT2 {public void show () {System.out.println ("erstellt Typ -2 -Produkt"); }} / * * 1a 1b gehört zum Produkt1 in derselben Produkthierarchiestruktur * 2A 2B gehört zu Product2 * / public Class Saldroduct1a erweitert Product1 {@Override public void show () {Super.Show (); System.out.println ("Dies ist unter Produkt 1: Produkt a"); }} public class gradeProduct1b erweitert Product1 {@Override public void show () {super.show (); System.out.println ("Dies ist unter Produkt 1: Produkt B"); }} public class gradeProduct1b erweitert Product1 {@Override public void show () {super.show (); System.out.println ("Dies ist unter Produkt 1: Produkt B"); }} public class gradeProduct2a erweitert Product2 {@Override public void show () {Super.show (); System.out.println ("Dies ist unter Produkt 2: Produkt a"); }} public class gradeProduct2b erweitert Product2 {@Override public void show () {super.show (); System.out.println ("Dies ist unter Produkt 2: Produkt B"); }} // Abstract Factory erstellt verschiedene abstrakte Produkte öffentliche Schnittstelle ifactory {public iProduct1 CreateProduct1a (); // Klasse 1 Produktmodell A public iProduct1 createEProduct1b (); // Produktmodell -BOUPROFT -MODEPREPRODUCT2 -MODEPROPREPRODUCT2B () -Spublik -Model -Model -Model -Model -Model -Model -Model -Model -Model -Model -Model -Model -Model -Model -Modell 2 //. Product Factory erstellt physische Produkte, der Rückgabetyp ist abstraktes Produkt Public Class Factory Implements ifactory {public iProduct1 createProduct1a () {return neuer STROMEProduct1a (); } public iProduct1 createProduct1b () {neuer Saldroduct1b () zurückgeben; } public iProduct2 createProduct2a () {neuer Saldroduct2a () zurückgeben; } public iProduct2 createProduct2b () {neuer Saldroduct2b () zurückgeben; }} /** Abstraktes Werksmuster: Wird verwendet, um eine Reihe verwandter oder voneinander abhängiger Objekte zu erstellen New Factory (); IProduct1 product1a = factory.createProduct1a (); product1a.show (); IProduct1 product1b = factory.createProduct1b (); product1b.show (); IProduct2 product2a = factory.createProduct2a (); product2a.show (); IProduct2 product2b = factory.createProduct2b (); product2b.show (); }}