Latest web development tutorials

Resumen patrón de fábrica

Abstract Factory (Fábrica modelo abstracto) se crea en torno a un súper vegetales otras plantas. La planta es también conocido como súper fábrica de otras fábricas. Este tipo de patrones de diseño pertenecen crear esquema, que proporciona la mejor manera de crear objetos.

En el patrón de fábrica abstracta, la interfaz es responsable de la creación de un objetos relacionados con las plantas, sin especificar explícitamente sus clases. Cada objeto generado, según la fábrica puede proporcionar modelo de fábrica.

introducción

Intención: para crear una serie de interfaz de objetos vinculados o dependientes, sin especificar sus clases concretas.

Principalmente para resolver: El principal problema de las opciones de interfaz.

Cuándo usar: productos del sistema tienen más de una familia de productos, y el único sistema en el que una familia de productos de consumo.

Cómo solucionarlo: en una familia de productos en el interior, definir varios productos.

El código de la llave: agregar múltiples productos similares en una fábrica.

Ejemplos de aplicación: el trabajo, con el fin de participar en algunas reuniones, debe haber dos o más conjuntos de ropa que, por ejemplo, ropa de trabajo (juegos completos, una serie de productos específicos), vestido de la manera (juegos completos, una serie de productos específicos), incluso para una familia es posible que tenga una mujeres de negocios, hombres de negocios, la moda femenina, moda masculina, que también son juegos completos, es decir, una serie de productos específicos.Supongamos una situación (en la realidad no existe, o de lo contrario, no el comunismo, pero a favor de la descripción abstracta de fábrica patrón), en su casa, un armario (fábrica de hormigón) sólo puede almacenar un uno de esos ropa (juegos completos, una serie de productos específicos), cada vez que tome este conjunto de ropa del armario de forma natural sacados. Con OO pensar que entender, todo el vestuario de la familia (planta de hormigón) son armarios de clase (abstract factory) uno, y cada una muda de ropa y que incluye chaqueta específica (un producto en particular), pantalones (una específica producto), estos son, de hecho, la chaqueta de la camisa específica (productos abstractos), los pantalones son los pantalones específicos (otro producto abstracto).

Pros: Cuando una familia de productos más objetos están diseñados para trabajar juntos, podemos asegurar que el cliente siempre use sólo los mismos objetos de la familia de productos.

Desventajas: la familia extendida para productos es muy difícil, para aumentar un rango de un producto, tanto en el código Riga creador abstracto, sino también para añadir un código específico dentro.

Escenarios de uso: 1, QQ para la piel, un conjunto de cambios juntos.2, generar un diferentes procedimientos del sistema operativo.

Nota: La familia deproductos extendida es difícil, fácil de expandir el nivel de producto.

realización

Vamos a crear la interfaz de interfaz y la implementación de clasesformayelcolor de estas entidades. El siguiente paso es crear una clase de fábricaAbstractFactory abstracta.A continuación, defina la clase de fábrica yShapeFactoryColorFactory, estas dos clases son de fábrica se expandióAbstractFactory.A continuación, cree una claseFactoryProducercreador de fábrica /constructor.

AbstractFactoryPatternDemo,nuestras clases de demostración utilizandoFactoryProducerpara obtenerAbstractFactoryobjeto. Se pasa a dar forma ala forma dela información(CIRCLE / Rectángulo / cuadrado)aAbstractFactory,que necesita para obtener el tipo de objeto. También pasa la información de colorde color(rojo / verde / azul) paraAbstractFactory,que necesita para obtener el tipo de objeto.

Resumen patrón de fábrica diagrama UML

Paso 1

Interfaz para crear una forma.

Shape.java

Forma interfaz pública {
   void draw ();
}

Paso 2

Crear clase de entidad que implementa la interfaz.

Rectangle.java

clase pública implementa Rectángulo Forma {

   @ Override
   sorteo public void () {
      ( "Método Dentro del rectángulo :: draw ().") System.out.println;
   }
}

Square.java

clase pública implementa Square Shape {

   @ Override
   sorteo public void () {
      ( "Método de la plaza interior :: draw ().") System.out.println;
   }
}

Circle.java

Círculo clase pública implementa la forma {

   @ Override
   sorteo public void () {
      ( "Método dentro del círculo :: draw ().") System.out.println;
   }
}

paso 3

Crear una interfaz para el color.

Color.java

Color de interfaz pública {
   relleno de huecos ();
}

Paso 4

Crear clase de entidad que implementa la interfaz.

Red.java

implementa public class {Color Rojo

   @ Override
   public void relleno () {
      ( "Método Dentro de Red :: relleno ().") System.out.println;
   }
}

Green.java

clase pública implementa verde color {

   @ Override
   public void relleno () {
      ( "Método Dentro Verde :: relleno ().") System.out.println;
   }
}

Blue.java

clase pública implementa azul del color {

   @ Override
   public void relleno () {
      ( "Método Dentro Azul :: relleno ().") System.out.println;
   }
}

paso 5

Crear una clase abstracta para el color y la forma de conseguir los objetos de la fábrica.

AbstractFactory.java

AbstractFactory clase abstracta pública {
   Extracto del color getColor (String color);
   Resumen forma getShape (secuencia de la forma);
}

paso 6

Crear clase de fábrica AbstractFactory extendida, entidad de la generación objeto de clase sobre la base de la información proporcionada.

ShapeFactory.java

ShapeFactory clase pública se extiende AbstractFactory {
	
   @ Override
   Forma pública getShape (String shapeType) {
      si (shapeType == null) {
         return null;
      }		
      si (shapeType.equalsIgnoreCase ( "círculo")) {
         return new Circle ();
      } Else if (shapeType.equalsIgnoreCase ( "RECTANGULO")) {
         return new Rectangle ();
      } Else if (shapeType.equalsIgnoreCase ( "cuadrado")) {
         volver nueva Plaza ();
      }
      return null;
   }
   
   @ Override
   GetColor de color (color String) {
      return null;
   }
}

ColorFactory.java

ColorFactory clase pública se extiende AbstractFactory {
	
   @ Override
   Forma pública getShape (String shapeType) {
      return null;
   }
   
   @ Override
   GetColor de color (color String) {
      si (color == null) {
         return null;
      }		
      si (color.equalsIgnoreCase ( "rojo")) {
         volver nueva Red ();
      } Else if (color.equalsIgnoreCase ( "verde")) {
         return new Verde ();
      } Else if (color.equalsIgnoreCase ( "azul")) {
         return new azul ();
      }
      return null;
   }
}

paso 7

Crear una categoría creador / constructor de la fábrica, que pasa a través de la información de forma o color para obtener la fábrica.

FactoryProducer.java

FactoryProducer public class {
   getFactory AbstractFactory estáticos públicos (elección String) {
      si (choice.equalsIgnoreCase ( "forma")) {
         volver nueva ShapeFactory ();
      } Else if (choice.equalsIgnoreCase ( "color")) {
         volver nueva ColorFactory ();
      }
      return null;
   }
}

paso 8

Utilice FactoryProducer para obtener AbstractFactory, para obtener el objeto de la clase haciendo pasar la información de tipo de entidad.

AbstractFactoryPatternDemo.java

public class {AbstractFactoryPatternDemo
   principales argumentos (String []) {public static void

      // Obtener la forma de fábrica AbstractFactory shapeFactory = FactoryProducer.getFactory ( "forma");

      // Obtener objeto Circle forma Forma shape1 = shapeFactory.getShape ( "círculo");

      // Llamar al método draw de shape1.draw círculo ();

      // Obtener objeto de forma rectangular Forma shape2 = shapeFactory.getShape ( "RECTANGULO");

      // Llamar al método draw de rectángulo shape2.draw ();
      
      // Obtener forma del objeto Cuadrado shape3 = shapeFactory.getShape ( "cuadrado");

      // Llamar al método draw Plaza shape3.draw ();

      // Obtener fábricas de color AbstractFactory colorFactory = FactoryProducer.getFactory ( "color");

      // Obtener el color del objeto es de color rojo color1 = colorFactory.getColor ( "rojo");

      // Llamar al método de relleno color1.fill Red ();

      // Obtener el color del objeto del color verde color2 = colorFactory.getColor ( "verde");

      // Llamar al método de relleno color2.fill de Green ();

      // Obtener el color del objeto color azul color3 = colorFactory.getColor ( "azul");

      // Llamar al método de relleno color3.fill azul ();
   }
}

paso 9

Verifique la salida.

En el interior del círculo :: método draw ().
Dentro del rectángulo :: método draw ().
Dentro de la plaza :: método draw ().
Dentro de Red :: relleno () método.
Dentro método Verde :: relleno ().
Dentro azul :: relleno () método.