Pequeña charla sobre patrones de diseño (2): patrón de fábrica simple

Introducción a la columna

Dirección de columna

enlace

Introducción a la columna

Principalmente analiza y resume uno por uno los 23 patrones de diseño comunes actualmente en el mercado, espero que los amigos interesados ​​puedan echarle un vistazo y se actualizará continuamente. Espero que puedan supervisarme y podamos aprender y progresar juntos, vamos todos.
Insertar descripción de la imagen aquí

Patrón de fábrica simple

El patrón de fábrica simple es un patrón de diseño de creación que proporciona la mejor manera de crear objetos. Al encapsular la lógica de creación del objeto en una clase de fábrica, el cliente no necesita conocer los detalles de creación específicos, solo solicite el objeto requerido de la clase de fábrica.

Composición de patrón de fábrica simple.

En el patrón de fábrica simple, hay tres roles principales involucrados: productos abstractos, productos concretos y fábricas simples.

Producto abstracto

El producto abstracto es la interfaz común de clases de productos específicas, que define los métodos comunes del producto. Un producto abstracto puede ser una interfaz o una clase abstracta, y la implementación específica la completa la clase de producto específica.

Producto de hormigón

Un producto concreto es una clase de implementación de un producto abstracto, que implementa los métodos definidos en el producto abstracto. En el patrón de fábrica simple, cada producto específico corresponde a una categoría de producto específica.

Fábrica sencilla

Una fábrica simple es una clase que contiene métodos estáticos que crean objetos de producto. Crea el objeto de producto específico correspondiente de acuerdo con la solicitud del cliente y lo devuelve al cliente para su uso. Una fábrica simple oculta los detalles de la creación de objetos. El cliente solo necesita obtener los objetos requeridos a través de la clase de fábrica sin crear una instancia directa de la clase de producto específica.
Insertar descripción de la imagen aquí

La relación entre los tres

1. Los productos abstractos estandarizan el comportamiento de productos específicos definiendo la interfaz común del producto.
2. El producto específico es la clase de implementación del producto abstracto y es responsable de implementar los métodos definidos en el producto abstracto.
3. Como clase de fábrica, la fábrica simple encapsula el proceso de creación de objetos. Crea el objeto de producto específico correspondiente de acuerdo con la solicitud del cliente y lo devuelve al cliente para su uso.

Idea principal

Encapsule el proceso de creación de objetos en una clase de fábrica, y el cliente solo necesita obtener el objeto requerido a través del método estático de la clase de fábrica sin crear una instancia directa de la clase de producto específica. Esto puede reducir el acoplamiento entre el cliente y categorías de productos específicas, y facilitar la expansión y el mantenimiento de tipos de productos.
Insertar descripción de la imagen aquí

Implementación de código Java

Primero, definimos una interfaz de producto abstracta Producto, que contiene un método abstracto uso():

public interface Product {
    
    
    void use();
}

Luego, creamos dos clases de productos concretas, ProductoA y ProductoB, que implementan la interfaz abstracta del producto Producto:

public class ProductA implements Product {
    
    
    @Override
    public void use() {
    
    
        System.out.println("Product A is being used.");
    }
}

public class ProductB implements Product {
    
    
    @Override
    public void use() {
    
    
        System.out.println("Product B is being used.");
    }
}

Insertar descripción de la imagen aquí

A continuación, creamos una clase de fábrica simple SimpleFactory, que contiene un método estático createProduct (tipo de cadena) para crear el objeto de producto correspondiente de acuerdo con el tipo de parámetro pasado:

public class SimpleFactory {
    
    
    public static Product createProduct(String type) {
    
    
        if (type.equals("A")) {
    
    
            return new ProductA();
        } else if (type.equals("B")) {
    
    
            return new ProductB();
        }
        return null;
    }
}

Finalmente, podemos usar el patrón de fábrica simple en el código del cliente para crear objetos de producto concretos:

//客户端
public class Client {
    
    
    public static void main(String[] args) {
    
    
        Product productA = SimpleFactory.createProduct("A");
        productA.use();  // Output: Product A is being used.

        Product productB = SimpleFactory.createProduct("B");
        productB.use();  // Output: Product B is being used.
    }
}

Insertar descripción de la imagen aquí

análisis de código

El cliente crea un objeto de producto específico llamando al método SimpleFactory.createProduct() sin crear una instancia directa de la clase de producto específica. De esta forma, se reduce el acoplamiento entre el cliente y productos específicos, y también se facilita la ampliación y mantenimiento de tipos de productos.

La clase de fábrica simple SimpleFactory contiene un método estático createProduct (tipo cadena), que crea el objeto de producto correspondiente de acuerdo con el tipo de parámetro pasado. En aplicaciones reales, se puede utilizar una lógica más compleja para crear objetos basados ​​en necesidades específicas, como leer archivos de configuración o bases de datos para determinar qué producto específico crear.

En el código del cliente, creamos el objeto de producto específico llamando al método SimpleFactory.createProduct(). El cliente sólo necesita conocer el tipo de producto y no necesita preocuparse por los detalles específicos de creación. Esto puede reducir el acoplamiento entre el cliente y categorías de productos específicas, y facilitar la expansión y el mantenimiento de tipos de productos.

Análisis de ventajas y desventajas

ventaja

Encapsula el proceso de creación de objetos.

El patrón de fábrica simple encapsula el proceso de creación de objetos en una clase de fábrica: el cliente solo necesita conocer el tipo de producto y no necesita preocuparse por los detalles específicos de la creación. Esto puede reducir la complejidad del cliente y facilitar la expansión y el mantenimiento de los tipos de productos.

Reduce el acoplamiento entre el cliente y categorías de productos específicas.

El cliente solo necesita obtener los objetos requeridos a través de la clase de fábrica sin crear una instancia directa de la clase de producto específica. Esto puede reducir la dependencia entre el cliente y clases de productos específicas, haciendo que el código del cliente sea más flexible y fácil de mantener.
Insertar descripción de la imagen aquí

Facilita la expansión y el mantenimiento de tipos de productos.

En el patrón de fábrica simple, si necesita agregar un nuevo tipo de producto, solo necesita modificar el código de la clase de fábrica. Esto facilita agregar nuevos tipos de productos sin modificar el código del cliente. Al mismo tiempo, también facilita el mantenimiento de tipos de productos y gestiona de forma centralizada el proceso de creación de objetos.

defecto

Viola el principio de apertura y cierre.

En el patrón de fábrica simple, al agregar un nuevo tipo de producto, es necesario modificar el código de la clase de fábrica. Esto viola el principio de abierto y cerrado y modificar el código existente puede introducir nuevos riesgos. Por lo tanto, si el tipo de producto cambia con frecuencia, el patrón simple de fábrica no es adecuado.

Las responsabilidades de la fábrica son demasiado pesadas

En el patrón de fábrica simple, la clase de fábrica es responsable de crear todos los objetos del producto. A medida que aumentan los tipos de productos, el código de la clase de fábrica se volverá cada vez más complejo y tendrá responsabilidades sobrecargadas. Esto viola el principio de responsabilidad única y no favorece el mantenimiento y la expansión del código.

Resumir

El patrón de fábrica simple es un patrón de diseño de creación simple y de uso común, adecuado para escenarios donde hay menos objetos y relativamente simples para crear. Encapsula el proceso de creación de objetos, reduce la complejidad del cliente y facilita la expansión y el mantenimiento de los tipos de productos. Sin embargo, el modelo de fábrica simple viola el principio de apertura y cierre y no es adecuado para situaciones en las que los tipos de productos cambian con frecuencia. Además, las responsabilidades sobrecargadas de la clase fábrica son también una de sus deficiencias. Por lo tanto, en aplicaciones prácticas, es necesario elegir el modo de creación apropiado según la situación específica.

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_74888502/article/details/132873745
Recomendado
Clasificación