Patrón de diseño 2 Patrón de método de fábrica

¿Cuál es el patrón del método de fábrica?

Tenemos una clase de producto, una interfaz de fábrica y una clase de fábrica que implementa la interfaz de fábrica. La creación de objetos de producto se basa en la clase de fábrica para crear. El núcleo es la separación de creación y uso.

"

Defina una interfaz para crear un objeto, pero deje que las subclases decidan qué clase instanciar. El método de fábrica permite que una clase difiera la instanciación a subclases

"

El patrón del método de fábrica tiene las siguientes ventajas:

"
  • Los productos se pueden obtener a través de la fábrica sin conocer el proceso específico de creación del producto

  • Si agrega un nuevo producto, no necesita modificar la fábrica, solo agregue una nueva fábrica

"

Sin embargo, esto también se ha convertido en una desventaja del modelo de fábrica, lo que sin duda aumenta la complejidad del sistema.

Si desea implementar una fábrica abstracta, necesita varios elementos:

"
  • Fábrica abstracta

  • Fábrica específica

  • Producto abstracto

  • Productos específicos

"

El diagrama de estructura es el siguiente:

AbstractFactoryEs una fábrica abstracta, que en realidad es una interfaz con un newProduct()método a implementar para crear un producto.

ConcreteFactoryPara la fábrica de hormigón, para AbstractFactoryla realización. Puede haber varias fábricas.

ProductEs la interfaz del producto.

ConcreteProductEs la realización de productos específicos, y existe una correspondencia uno a uno entre los productos generales y las fábricas.

Código

Habiendo dicho eso, escribamos una Demo para darnos cuenta.

Primero escriba una interfaz de producto:

public interface Product {
    void show();
}

Escribamos una interfaz de fábrica:

public interface Factory {
    public Product product();
}

Realización de productos específicos:

public class ConcreteProduct1 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品1显示...");
    }
}

Realización de fábrica específica:

public class ConcreteFactory1 implements Factory {
    @Override
    public Product product() {
        System.out.println("具体工厂1生成-->具体产品1...");
        return new ConcreteProduct1();
    }
}

Esta fábrica se utiliza para crear productos.

Si queremos obtener el objeto del producto, solo necesitamos crear una instancia de la fábrica

@Slf4j
public class FactoryTest {
    @Test
    public void test() {
        ConcreteFactory1 concreteFactory1 = new ConcreteFactory1();
        Product product = concreteFactory1.product();
        product.show();
    }
}

Resultados de la prueba:

具体工厂1生成-->具体产品1...
具体产品1显示...

Algunas reflexiones sobre el patrón del método de fábrica

El producto en sí no se instancia, sino que se entrega a la fábrica para que lo haga. El método de fábrica es que la instanciación de una clase se retrasa a la clase de fábrica.

Creo que una ventaja importante de utilizar el método de fábrica es bloquear la categoría de producto. La persona que llama puede obtener el producto sin conocer los detalles del producto generado, lo que garantiza la privacidad y seguridad del producto producido.

Por ejemplo, si usa JDBC para conectarse a la base de datos, si migra la base de datos de MySQL a Oracle. Solo es necesario cambiar el controlador de la base de datos. No es necesario cambiar nada más. Aquí se utiliza el patrón del método de fábrica.

Por supuesto, si agrega categorías de productos, debe considerar cuidadosamente si desea agregar categorías de fábrica. Después de todo, esto aumentará la complejidad del sistema.

El patrón del método de fábrica se puede utilizar en proyectos heterogéneos, como interactuar con un proyecto que no sea Java a través de WebService. Aunque WebService afirma poder lograr el isomorfismo de sistemas heterogéneos, todavía existen muchos problemas en el desarrollo real. , Como problemas de tipo, problemas de soporte de archivos WSDL, etc. Los objetos generados a partir de WSDL se consideran un producto y luego son administrados por una clase de fábrica específica para reducir el acoplamiento con los sistemas periféricos.

En aplicaciones complejas, generalmente se usa un enfoque de múltiples fábricas y luego se agrega una clase de coordinación para evitar la comunicación entre la persona que llama y cada subfábrica. La función de la clase de coordinación es encapsular la clase de subfábrica y proporcionar una interfaz de acceso unificada para módulos de alto nivel.

Recomendado en el pasado

Escanee el código QR para ser más emocionante. O busque Lvshen_9 en WeChat , puede responder para obtener información en segundo plano

1.回复"java" 获取java电子书;

2.回复"python"获取python电子书;

3.回复"算法"获取算法电子书;

4.回复"大数据"获取大数据电子书;

5.回复"spring"获取SpringBoot的学习视频。

6.回复"面试"获取一线大厂面试资料

7.回复"进阶之路"获取Java进阶之路的思维导图

8.回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)

9.回复"总结"获取Java后端面试经验总结PDF版

10.回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)

11.回复"并发导图"获取Java并发编程思维导图(xmind终极版)

Otro: haga clic en [ Mis beneficios ] para tener más sorpresas.

Supongo que te gusta

Origin blog.csdn.net/wujialv/article/details/108799052
Recomendado
Clasificación