Patrones de diseño (2) - Resumen patrón de fábrica de estudio preliminar y presentación de un caso

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

Supongo que te gusta

Origin www.cnblogs.com/zaevn00001/p/12612706.html
Recomendado
Clasificación