Un patrón de diseño al día - Método de fábrica

Uno: patrón de motivación

Define una interfaz para crear objetos, pero depende de las subclases decidir qué clase instanciar. Los métodos de fábrica difieren la creación de instancias a las subclases.

Dos: definición de modo

El patrón de método de fábrica también se denomina patrón de fábrica, también llamado patrón de constructor virtual (Virtual Constructor) o patrón de fábrica polimórfica (Polymorphic Factory), que pertenece al patrón de creación de clase.
En el patrón del método de fábrica, la clase principal de fábrica es responsable de definir la interfaz pública para crear objetos de productos, mientras que la subclase de fábrica es responsable de generar objetos de productos específicos. El propósito de esto es retrasar la creación de instancias de la clase de productos en la fábrica. subclase Es decir, a través de la subclase de fábrica para determinar qué clase de producto específico debe instanciarse.

En una fábrica simple, el objeto lo crea la clase principal, mientras que en un método de fábrica, el objeto lo crea la subclase.

Tres: estructura del patrón

El patrón Factory Method incluye los siguientes roles:

  • AbstractProduct: producto abstracto
  • concreteProcuct: producto de hormigón
  • AbstractFactory: fábrica abstracta
  • ConcreteFactory: fábrica de hormigón
    inserte la descripción de la imagen aquí

Cuatro: ejemplo de código

Hay cuatro roles, fábrica abstracta, fábrica concreta, producto abstracto, producto concreto. Ya no es una clase de fábrica para instanciar un producto concreto, sino una subclase de una fábrica abstracta para instanciar el producto
1. Producto abstracto

public interface Bus {
    
    

    void run();

    void stop();
}

2. El producto concreto ConcreteProduct
implementa la interfaz

public class BusImpl1 implements Bus {
    
    
    @Override
    public void run() {
    
    
        System.out.println("BusImpl1 is running");
    }

    @Override
    public void stop() {
    
    
        System.out.println("BusImpl1 stop running");
    }
}

public class BusImpl2 implements Bus {
    
    
    @Override
    public void run() {
    
    
        System.out.println("BusImpl2 is running");
    }

    @Override
    public void stop() {
    
    
        System.out.println("BusImpl2 stop running");
    }
}

3. La fábrica abstracta Factory
define la interfaz de generación de productos

/**
 * 抽象工厂
 */
public abstract class AbstractFactory {
    
    
    abstract public Bus create();
}

4. La fábrica de hormigón ConcreteFactory
implementa la interfaz de generación de productos y genera objetos de roles de productos específicos

/**
 * 具体工厂
 */
public class BusImpl1Factory extends AbstractFactory {
    
    
    @Override
    public Bus create() {
    
    
        return new BusImpl1();
    }
}

/**
 * 具体工厂
 */
public class BusImpl2Factory extends AbstractFactory {
    
    
    @Override
    public Bus create() {
    
    
        return new BusImpl2();
    }
}

5. Cliente:

public class Client1 {
    
    
    public static void main(String[] args) {
    
    
        // 由抽象工厂的子类去实例化产品
        AbstractFactory busImpl1Factory = new BusImpl1Factory();
        Bus busImpl1 = busImpl1Factory.create();
        busImpl1.run();

        AbstractFactory busImpl2Factory = new BusImpl2Factory();
        Bus busImpl2 = busImpl2Factory.create();
        busImpl2.stop();
    }
}

Quinto: Análisis y conclusión

  • El patrón de método de fábrica, también conocido como patrón de fábrica, pertenece al patrón de creación de clases. En el patrón del método de fábrica, la clase principal de fábrica es responsable de definir la interfaz pública para crear objetos de productos, mientras que la subclase de fábrica es responsable de generar objetos de productos específicos. El propósito de esto es retrasar la creación de instancias de la clase de productos en la fábrica. subclase Es decir, a través de la subclase de fábrica para determinar qué clase de producto específico debe instanciarse.

  • Una fábrica específica es responsable de producir productos específicos, y cada fábrica específica corresponde a un producto específico

  • El patrón del método de fábrica es una mayor abstracción y generalización del patrón de fábrica simple. Debido al uso del polimorfismo orientado a objetos, el patrón del método de fábrica mantiene las ventajas del patrón de fábrica simple y supera sus desventajas.

  • En el patrón del método de fábrica, la clase central de fábrica ya no es responsable de la creación de todos los productos, sino que delega el trabajo de creación específico a las subclases. Esta clase central solo es responsable de proporcionar la interfaz que debe implementar la fábrica concreta, no los detalles de la clase de producto que se está instanciando, lo que hace que el patrón del método de fábrica permita al sistema introducir nuevos productos sin modificar el rol de la fábrica.

  • La principal ventaja del patrón del método de fábrica es que no hay necesidad de modificar el sistema existente al agregar una nueva clase de producto, y encapsula los detalles de creación del objeto del producto, y el sistema tiene buena flexibilidad y extensibilidad;

  • La desventaja es que cuando se agregan nuevos productos, es necesario agregar nuevas fábricas, lo que da como resultado un aumento emparejado en el número de clases del sistema, lo que aumenta la complejidad del sistema hasta cierto punto.

  • El patrón del método de fábrica es aplicable en las siguientes situaciones:

  • Una clase para la cual una clase no conoce los objetos que necesita;

  • Una clase especifica qué objeto crear a través de sus subclases;

  • La tarea de crear un objeto se delega a una de las múltiples subclases de fábrica, y el cliente puede usarla sin importar qué subclase de fábrica crea la subclase de producto, y puede especificarla dinámicamente cuando sea necesario.

Supongo que te gusta

Origin blog.csdn.net/qq_44867340/article/details/117635545
Recomendado
Clasificación