Modo de constructor del modo de diseño 5

Un objeto complejo suele estar compuesto por varios subcomponentes en determinados pasos. Por ejemplo, un automóvil se compone de componentes como motores, neumáticos y volantes.

Las distintas partes que componen el objeto se pueden seleccionar de forma flexible y los pasos de creación son similares. Podemos utilizar el modelo de constructor para describir la creación de tales productos.

Que es el modo constructor

"

Separe la construcción de un objeto complejo de su representación para que el mismo proceso de construcción pueda crear diferentes representaciones (Separe la construcción de un objeto complejo de su representación, para que el mismo proceso de construcción pueda crear diferentes representaciones).

"

En el modo constructor, un objeto complejo se descompone en varios objetos simples y los componentes del producto permanecen sin cambios, pero el interior de cada objeto simple puede ser flexible y cambiante.

No hablemos de las ventajas y desventajas del modo constructor, ahora entendamos la estructura del modo constructor.

El modo de constructor se compone principalmente de cuatro elementos: producto, constructor abstracto, constructor de hormigón y comandante. La descripción de estos 4 elementos es la siguiente:

"
  • Función del producto (Producto): es un objeto complejo que contiene varios componentes, y cada componente es creado por un constructor específico.

  • Constructor abstracto (Builder): es una interfaz que contiene métodos abstractos para crear varios subcomponentes del producto y, por lo general, contiene un método para devolver productos complejos  getResult().

  • Concrete Builder (Concrete Builder): implementa la interfaz Builder y completa el método de creación de concreto de cada componente de un producto complejo.

  • Director: Llama a los métodos de construcción y ensamblaje de componentes en el objeto constructor para completar la creación de objetos complejos. El director no involucra información específica del producto.

"

La relación entre estos elementos es la siguiente:

Modo constructor

Código

Categoria de productoProduct

@Data
public class Product {
    private String partA;
    private String partB;
    private String partC;

    public void show(){
        String partA = getPartA();
        String partB = getPartB();
        String partC = getPartC();
        System.out.println("这可能是东半球最好的产品...");
        Console.log("组成结构:{},{},{}",partA,partB,partC);
    }
}

ProductLa clase incluye 3 campos de componentes y un método de visualización show().

Clase abstracta de constructorBuilder

public abstract class Builder {
 protected Product product = new Product();

 public abstract void buildPartA();

 public abstract void buildPartB();

 public abstract void buildPartC();

 public Product getResult() {
  return product;
 }
}

La clase abstracta Builderincluye 3 métodos abstractos y un Productmétodo para obtener un objeto.

ComandanteDirector

public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public Product construct(){
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}

DirectorLa clase contiene un Directorconstructor para pasar el Builderobjeto, y el construct()método llama principalmente al método en la clase construida y devuelve el Productobjeto.

ConcreteBuilderHerede el constructor abstracto e implemente los métodos que contiene.

public class ConcreteBuilder extends Builder {
    @Override
    public void buildPartA() {
        product.setPartA("建造 PartA");
    }

    @Override
    public void buildPartB() {
        product.setPartB("建造 PartB");
    }

    @Override
    public void buildPartC() {
        product.setPartC("建造 PartC");
    }
}

Clase de llamadaClient

public class Client {
    public static void main(String[] args){
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        Product construct = director.construct();
        construct.show();
    }
}

Resultados de la prueba:

这可能是东半球最好的产品...
组成结构:建造 PartA,建造 PartB,建造 PartC

Hay un código para saber:

"

Primero, se crea un constructor. Hay varias funciones en el constructor para asignar valores a los atributos del producto

Luego se crea un comandante y el comandante llama a la función de constructor para obtener el producto.

"

Desde el modo de construcción, sabemos que el producto no se crea directamente, sino que lo crea el conductor que manda al constructor. ¿Es esto muy similar al modo de fábrica, pero debe tenerse en cuenta que el modo de constructor es más complicado que el modo de fábrica?

Cuando el producto que debe crearse tiene un proceso de creación complejo, se puede extraer el proceso de creación común y luego entregarlo a la clase de implementación específica para personalizar el proceso de creación, de modo que el mismo comportamiento de creación pueda producir diferentes productos, crear y presentar por separado y crear productos. La flexibilidad aumenta enormemente.

Pensando en el modelo constructor

Entonces, ¿cuáles son las ventajas del modo constructor?

Al igual que el modelo de fábrica, el cliente puede obtener el producto sin conocer los detalles de composición interna del producto, el constructor y el constructor son independientes entre sí. Propicia para la expansión del sistema y la modificación de un determinado constructor no afectará a otros módulos.

Entonces, ¿cuándo usar el modo constructor? The Zen of Design Patterns escribió:

"

● El modo de constructor se puede utilizar cuando se generan el mismo método, una secuencia de ejecución diferente y resultados de eventos diferentes.

● Se pueden ensamblar varios componentes o piezas en un objeto, pero los resultados de ejecución producidos no son los mismos, puede usar este modo.

● La categoría de producto es muy compleja o la secuencia de llamada en la categoría de producto produce un rendimiento diferente. En este momento, es muy adecuado utilizar el modo de creación.

● En el proceso de creación de objetos, se utilizan algunos otros objetos del sistema. Cuando estos objetos no están fácilmente disponibles durante la creación de objetos de producto, el modo de construcción también se puede utilizar para encapsular el proceso de creación del objeto. Este tipo de escena solo puede ser un método de compensación, porque un objeto no es fácil de obtener, no se nota en la etapa de diseño y el proceso de creación se suaviza a través del modo creador, que en sí mismo viola el diseño.

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/109008043
Recomendado
Clasificación