Resumen patrón de fábrica
Abstract Factory (modelo abstracto de fábrica) es crear otro patrón de diseño sub-fábrica en torno a una super planta. La planta súper también se conoce como total de la planta otras plantas. Este tipo de patrón de diseño y patrón de la fábrica para crear el mismo tipo pertenecientes a la modelo, que ofrece la mejor manera de crear objetos.
En el patrón de la fábrica abstracta, la interfaz es responsable de la creación de una fábrica de objeto relacionado, no es necesario especificar explícitamente su clase. Cada generada de acuerdo con la fábrica de objeto puede proporcionar modelo de fábrica.
introducción
Intención: proporcionar una serie de objetos relacionados o dependientes de crear interfaces sin especificar sus clases concretas.
Principalmente para resolver: el problema principal de opciones de interfaz.
Cuando de usar: el sistema tiene más de un producto familia de productos, el producto puede ser dibujado pluralidad familia de objetos, y el sistema en el que sólo una familia de productos de consumo.
¿Cómo resolver: en una familia de productos en el interior, definen varios productos.
El código de la llave: la agregación de múltiples productos similares en una fábrica.
Pros: Cuando una familia de productos de múltiples objetos están diseñados para el trabajo en conjunto cuando garantiza siempre los clientes utilizan sólo los objetos de la misma familia de productos.
Desventajas: la expansión de la familia de productos es muy difícil, para aumentar un producto de una serie, tanto en los códigos de creador Riga abstractos, sino también añadir el interior de código específico.
escenarios de uso: 1, QQ para la piel, un conjunto de cambio juntos. 2, generan diferentes procedimientos del sistema operativo.
Nota: La familia de productos es difícil de ampliar, fácil de expandir el nivel de producto.
Caso I (referencias incluidas):
Vamos a crear Forma y color interfaces y las implementaciones de estas clases de interfaces de entidad. El siguiente paso es crear un resumen clase de fábrica AbstractFactory . Luego define clase de fábrica ShapeFactory y ColorFactory , estas dos clases son la fábrica se extiende AbstractFactory . A continuación, cree una clase de fábrica creador / constructor FactoryProducer .
AbstractFactoryPatternDemo , nuestra clase de demostración utiliza FactoryProducer para obtener AbstractFactory objeto. Para AbstractFactory información de la forma de transmisión de la Forma ( el círculo / el rectángulo / cuadrado ), se necesita para obtener el tipo del objeto. También a AbstractFactory información de color de transmisión en color ( rojo / verde / azul ), que necesita para obtener el tipo de objeto.
Caso II (pequeñas series de escribir sus propios):
Antecedentes: La hipótesis de la ropa a las palabras, a partir de los tipos de ropa que se puede dividir en zapatos, camisetas, pantalones de traje, desde el color de su ropa, que se puede dividir en rojo, amarillo, verde, azul, si sólo se genera de acuerdo con el tipo de ropa en el caso de un objeto, no podemos determinar con precisión, por ejemplo, pantalones de traje desgaste del partido, pero mis pantalones de traje en azul y negro, en realidad elegir cuál es? Porque también tenemos que crear una instancia de un color.
Voy a crear interfaces e implementaciones de estas clases de interfaces de entidad de cierre y de color. A continuación, cree un total de abstracta clase de fábrica AbstractFactory, y la definición de su clase ClosingFactory sub-fábrica y ColorFactory, estas dos clases son la fábrica se extiende la clase de fábrica abstracta, y entonces usted necesita para crear un FactoryProducer (creador de fábrica)
Paso Código:
En primer lugar, la interfaz de creación de cierre y poner en práctica la clase entidad de interfaz
1 pública de interfaz de cierre { 2 vacío partido (); 3 }
1 pública de clase TShirt implementos Cierre { 2 @ Override 3 pública vacío partido () { 4 System.out.println ( "Soy la camiseta" ); 5 } 6 }
1 pública clase Sombrero implementos Cierre { 2 @ Override 3 pública vacío partido () { 4 System.out.println ( "Soy el sombrero" ); 5 } 6 }
En segundo lugar, crear una interfaz de color y su clase de implementación
1 pública interfaz de color { 2 vacío partido (); 3 }
1 pública de clase rojas implementos de color { 2 @ Override 3 pública vacío partido () { 4 System.out.println ( "Soy el rojo" ); 5 } 6 }
1 pública de clase verdes implementos de color { 2 @ Override 3 pública vacío partido () { 4 System.out.println ( "Soy verde" ); 5 } 6 }
En tercer lugar, crear una clase de fábrica abstracta y dos clase de fábrica subtotal
1 pública abstracta clase AbstractFactory { 2 pública abstracta del color getColor (tipo String); 3 pública abstracta de cierre getClosing (tipo String); 4 }
1 público clase ClosingFactory extiende AbstractFactory { 2 @ Override 3 público color getColor (tipo String) { 4 retorno nulo ; 5 } 6 7 @ Override 8 público getClosing de cierre (tipo String) { 9 si (type.equalsIgnoreCase ( "tshirt" )) { 10 retorno nueva camiseta (); 11 } demás si (type.equalsIgnoreCase ( "sombrero" )) { 12 de retorno nueva Sombrero (); 13 } 14 de retorno nulo ; 15 } 16 }
1 público clase ColorFactory extiende AbstractFactory { 2 @ Override 3 público color getColor (tipo String) { 4 si (type.equalsIgnoreCase ( "rojo" )) { 5 retorno nueva Red (); 6 } demás si (type.equalsIgnoreCase ( "verde" )) { 7 retorno de nuevo verde (); 8 } 9 retorno nulo ; 10 } 11 12 @ Override 13 públicaGetClosing de cierre (tipo String) { 14 retorno nulo ; 15 } 16 }
En cuarto lugar, crear un constructor de fábrica
1 pública clase FactoryProducer { 2 pública estática AbstractFactory getFactory (elección String) { 3 si (choice.equalsIgnoreCase ( "color" )) { 4 retorno nueva ColorFactory (); 5 } demás si (choice.equalsIgnoreCase ( "cierre" )) { 6 retorno nueva ClosingFactory (); 7 } 8 de retorno nulo ; 9 } 10 }
En quinto lugar, a prueba nuestro método de fábrica abstracta
1 público clase FactoryTest { 2 público estáticas void principales (String [] args) { 3 AbstractFactory closingFactory = FactoryProducer.getFactory ( "cierre" ); 4 Cierre camiseta = closingFactory.getClosing ( "tshirt" ); 5 tshirt.party (); 6 sombrero de Cierre = closingFactory.getClosing ( "sombrero" ); 7 hat.party (); 8 9 AbstractFactory colorFactory = FactoryProducer.getFactory ( "color" ); 10 de color rojo = colorFactory.getColor ( "rojo" ); red.party (); 12 verde color = colorFactory.getColor ( "verde" ); 13 green.party (); 14 } 15 }
En sexto lugar, la copia impresa
Soy la camiseta Soy sombrero Soy el rojo Soy verde
Fuente de referencia: https://www.runoob.com/design-pattern/abstract-factory-pattern.html