Comprensión del patrón de creación-patrón de fábrica abstracto

Tabla de contenido

1. Introducción:

2. Optimización de demostración abstracta de fábrica

2.1 Descripción del escenario

2.2 Implementación abstracta de fábrica

3. Ventajas y desventajas


1. Introducción:

El artículo anterior escribió sobre la comprensión de la demostración del modo método de fábrica-modo creacional.

Una desventaja del patrón del método de fábrica es que con el aumento de nuevas subclases, se creará más clase Java.

Para optimizar esta deficiencia, puede utilizar el patrón abstracto de fábrica para optimizar.

La premisa es intentar expandir la cantidad total de subcategorías a la vez, lo cual es inconveniente para el mantenimiento posterior;

El punto simple es crear un conjunto de API de cálculo de indicadores diferentes correspondientes en una clase común cuando se hayan determinado todos los indicadores.

2. Optimización de demostración abstracta de fábrica

2.1 Descripción del escenario

Para citar un blog:

En el patrón del método de fábrica, las fábricas específicas son responsables de producir productos específicos. Cada fábrica específica corresponde a un producto específico. El método de fábrica es único. Generalmente, solo hay uno o un grupo de métodos de fábrica sobrecargados en una fábrica específica. Pero a veces esperamos que una fábrica pueda proporcionar múltiples productos en lugar de un solo producto, como una fábrica de electrodomésticos, que puede producir televisores, refrigeradores, aires acondicionados y otros aparatos eléctricos en lugar de solo producir un determinado tipo de aparato eléctrico. Para comprender mejor el patrón abstracto de fábrica, primero presentamos dos conceptos:

       (1) Estructura de nivel de producto: la estructura de nivel de producto es la estructura de herencia del producto. Por ejemplo, si una clase abstracta es TV y sus subclases incluyen Haier TV, Hisense TV y TCL TV, entonces la TV abstracta y la marca específica de TV Se forma una estructura jerárquica de productos entre ellos, el televisor abstracto es la categoría principal y el televisor de marca específica es su subcategoría.

       (2) Familia de productos: en el modelo de fábrica abstracto, una familia de productos se refiere a un grupo de productos producidos por la misma fábrica y ubicados en diferentes estructuras jerárquicas de productos, como televisores Haier, refrigeradores Haier y televisores Haier producidos por Haier Electric Factory. Los televisores se encuentran en la estructura jerárquica de los productos de televisión y los refrigeradores Haier se encuentran en la estructura jerárquica de los refrigeradores. Los televisores Haier y los refrigeradores Haier constituyen una familia de productos.

       El diagrama esquemático de la estructura a nivel de producto y la familia de productos se muestra en la figura:

Múltiples cuadrados, círculos y elipses de diferentes colores forman tres estructuras de jerarquía de productos diferentes, mientras que los cuadrados, círculos y elipses del mismo color forman una familia de productos, y cada objeto de forma pertenece a una familia de productos y pertenece a una jerarquía de productos. Hay cinco familias de productos en la Figura 3, que pertenecen a tres estructuras jerárquicas de productos diferentes. Sólo podemos identificar de forma única un producto especificando la familia de productos a la que pertenece y la estructura jerárquica a la que pertenece.

       El patrón de fábrica abstracto se puede utilizar cuando el producto específico producido por la fábrica proporcionada por el sistema no es un objeto simple, sino múltiples productos específicos que se encuentran en diferentes estructuras jerárquicas de productos y pertenecen a diferentes tipos. El patrón de fábrica abstracto es la forma más abstracta y general de todos los patrones de fábrica. La mayor diferencia entre el patrón de fábrica abstracto y el patrón de método de fábrica es que el patrón de método de fábrica está dirigido a una estructura jerárquica de productos, mientras que el patrón de fábrica abstracto necesita enfrentar múltiples estructuras jerárquicas de productos, y una estructura jerárquica de fábrica puede ser responsable de múltiples diferentes estructuras jerárquicas de productos Creación de objetos de producto. Cuando una jerarquía de fábrica puede crear todos los objetos de una familia de productos que pertenecen a diferentes jerarquías de productos, el patrón de fábrica abstracto es más simple y más eficiente que el patrón de método de fábrica. El diagrama esquemático del patrón abstracto de fábrica se muestra en la Figura 4.
 

Cada fábrica específica puede producir todos los productos que pertenecen a una familia de productos, como cuadrados, círculos y óvalos del mismo color, y los productos producidos se ubican en diferentes estructuras jerárquicas de productos. Si se utiliza el patrón del método de fábrica, la estructura que se muestra en la Figura 4 debe proporcionar 15 fábricas concretas, mientras que el patrón de fábrica abstracto solo necesita proporcionar 5 fábricas concretas, lo que reduce en gran medida la cantidad de clases en el sistema.

2.2 Implementación abstracta de fábrica

Los siguientes roles están incluidos en el diagrama de estructura del patrón de fábrica abstracto:

       ● AbstractFactory (fábrica abstracta): Declara un conjunto de métodos utilizados para crear una familia de productos, cada método corresponde a un producto.

       ● ConcreteFactory (fábrica de hormigón): Implementa el método de creación de productos declarados en la fábrica abstracta y genera un grupo de productos específicos, estos productos forman una familia de productos y cada producto se ubica en una jerarquía de productos.

       ● AbstractProduct (producto abstracto): Declara la interfaz para cada producto y declara los métodos comerciales del producto en el producto abstracto.

       ● ConcreteProduct (producto concreto): define el objeto de producto específico producido por la fábrica específica y realiza el método comercial declarado en la interfaz abstracta del producto.

       Se declaran múltiples métodos de fábrica en la fábrica abstracta para crear diferentes tipos de productos. La fábrica abstracta puede ser una interfaz, una clase abstracta o una clase concreta. El código típico es el siguiente:
 

abstract class AbstractFactory {
public abstract AbstractProductA createProductA(); //工厂方法一
public abstract AbstractProductB createProductB(); //工厂方法二
……
}

具体工厂实现了抽象工厂,每一个具体的工厂方法可以返回一个特定的产品对象,而同一个具体工厂所创建的产品对象构成了一个产品族。对于每一个具体工厂类,其典型代码如下所示:

class ConcreteFactory1 extends AbstractFactory {
    //工厂方法一
public AbstractProductA createProductA() {
    return new ConcreteProductA1();
}
 
//工厂方法二
public AbstractProductB createProductB() {
    return new ConcreteProductB1();
}
 
……
}

3. Ventajas y desventajas

En pocas palabras, el patrón del método de fábrica se puede optimizar,

 Sin embargo, si es problemático agregar una nueva estructura de nivel de producto más adelante, es necesario modificar en gran medida el sistema original e incluso modificar el código de la capa de abstracción, lo que obviamente traerá grandes inconvenientes y violará el principio de "abrir y cerrar". principio".


 

Supongo que te gusta

Origin blog.csdn.net/qq_44691484/article/details/130528314
Recomendado
Clasificación