Modo de fábrica simple
Diagrama de clases
Crear objetos correspondientes con una condición a través de una clase de fábrica
// Funciones comerciales Interfaz pública ICALCULATY {Double GetResult (doble numa, doble NUMB); } public class CalcAdd implementa icalCational {@Override public Double GetResult (doble NUMA, Double Numb) {System.out.println ("ADD"); return numA + NUMB; }} clase pública CalcSubtract implementa icalCational {@Override public Double GetResult (doble NUMA, Double Numb) {System.out.println ("subtracción"); devolución de numa - entumecimiento; }}/** El modo de fábrica simple se centra en: Creación de objetos* Crear una clase de fábrica para crear instancias de algunas clases que implementen la misma interfaz o tengan relaciones de herencia*/public class test4Simple {public static void main (string [] args) {// string operation = "/"; Operación de cadena = "+"; // string operation = "-"; // string operation = "*"; doble numA = 182, entumecido = 33; Icalcational createCalc = calcSimpleFactory.CreateCalc (operación); double resultado = createCalc.getResult (NUMA, NUMB); System.out.println (resultado); }} Los defectos de una simple fábrica: cuando una fábrica simple crea un producto, es necesario pasar los parámetros correspondientes. Si el pase es incorrecto, el objeto no se puede recuperar.
Mejora: crear diferentes categorías de productos de múltiples maneras
clase pública calcMultipleFactory {public static icalCational ProductEAdD () {return new CalcAdD (); } public static ical Cculation Productesubtract () {return new CalcSubtract (); } public static icalCational ProducemultIlly () {return new CalcMultIlly (); } public static ical Cculation producedIvide () {return new CalcDivide (); }} public class test4Multiple {public static void main (string [] args) {double numA = 182, numb = 33; Icalcational createCalc = calcMultipleFactory.produceadd (); double resultado = createCalc.getResult (NUMA, NUMB); System.out.println (resultado); createCalc = calcMultipleFactory.ProduceSubtract (); resultado = createCalc.getResult (NUMA, NUMB); System.out.println (resultado); createCalc = calcMultipleFactory.ProduceSubtract (); resultado = createCalc.getResult (NUMA, NUMB); System.out.println (resultado); createCalc = calcMultipleFactory.ProducemultyLy (); resultado = createCalc.getResult (NUMA, NUMB); System.out.println (resultado); createCalc = calcMultipleFactory.ProDucedIvide (); resultado = createCalc.getResult (NUMA, NUMB); System.out.println (resultado); }} Patrón de fábrica abstracta
Existen varios conceptos: fábrica abstracta, fábrica física, producto abstracto, producto físico de fábrica abstracta: definir el método abstracto para crear productos. Entity Factory: Creación específica del producto Resumen del producto: una interfaz o producto de la clase base Producto: implementar funciones específicas o diagramas de clase derivados
// Resumen Product1 Interfaz pública IProduct1 {public void show (); } // Interfaz pública de producto abstracto IProduct2 {public void show (); } // Entity Product1 Public Class Product1 implementa IProduct1 {public void show () {System.out.println ("Producto creado Tipo 1"); }} // Entity Product2 Public Class Product2 implementa IProduct2 {public void show () {System.out.println ("Producto de tipo 2 creado"); }} / * * 1a 1b pertenece al producto1 en la misma estructura de jerarquía de productos * 2a 2b pertenece al producto 2 * / public class ogradoProduct1a extiende el producto1 {@Override public void show () {super.show (); System.out.println ("Esto está bajo el producto 1: Producto A"); }} public class Gradeproduct1b extiende el producto1 {@Override public void show () {super.show (); System.out.println ("Esto está bajo el producto 1: Producto B"); }} public class Gradeproduct1b extiende el producto1 {@Override public void show () {super.show (); System.out.println ("Esto está bajo el producto 1: Producto B"); }} public class Gradeproduct2a extiende Product2 {@Override public void show () {super.show (); System.out.println ("Esto está bajo el producto 2: Producto A"); }} public class Gradeproduct2B extiende Product2 {@Override public void show () {super.show (); System.out.println ("Esto está bajo el producto 2: Producto B"); }} // Resumen Factory crea diferentes productos abstractos interfaz pública ifactory {public iProduct1 CreatePRODUCT1A (); // Modelo de producto de clase 1 A Public IPRODUCT1 CreateProduct1B (); // Modelo de producto de Producto B Público IPRODUCT2 CreateProduct2a (); // Class 2 de Producto Modelo de Producto Público A PRODUCT2 PRODUCT2 PRODECUCT2 (); La fábrica crea productos físicos, el tipo de retorno es el producto abstracto de clase pública implementa ifactory {public IProduct1 CreateProduct1a () {return New GradePreduct1a (); } public IProduct1 CreateProduct1b () {return New GradeProduct1b (); } public IProduct2 CreateProduct2a () {return New GradePRODUCT2A (); } public IProduct2 CreateProduct2B () {return New GradePRODUCT2B (); }} /** Patrón de fábrica abstracta: se usa para crear un conjunto de objetos relacionados o interdependientes** Proceso: Abstract Factory, Physical Factory produce productos* Producto abstracto, Producto físico realiza las funciones del producto* Desvantados: cuando necesita agregar un producto (que consiste en la Entidad y la Entidad), la fábrica necesita cambiar* / Prueba pública Test4AbStract {Public Static Void Main (String [] [] ifactory {Args) {Args de nuevo Argory {Argory = Argory = Argory = Nuevo. Fábrica(); IProduct1 Product1a = factory.createPRODUCT1A (); producto1a.show (); IPRODUCT1 PRODUCT1B = FACTORY.CREATEPRODUCT1B (); producto1b.show (); IPRODUCT2 PRODUCT2A = FACTORY.CREATEPRODUCT2A (); producto2a.show (); IPRODUCT2 PRODUCT2B = FACTORY.CREATEPRODUCT2B (); producto2b.show (); }}