Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

El patrón de diseño Builder encapsula las propiedades de un objeto y le permite construir una representación del mismo. Este patrón te permite construir objetos complejos, con diferentes propiedades aunque pertenezcan a la misma clase.

Una clase de objeto típica contiene atributos, constructores y métodos. El patrón de constructor le permite extraer la lógica de construcción de la clase de objeto y colocarla en clases denominadas constructores. A continuación, puede utilizar estas clases de constructores para crear diferentes variaciones del mismo objeto.

Implementando el patrón Builder en Java

Un buen ejemplo del patrón de construcción es un sistema de pedidos de pizza que permite a los clientes seleccionar diferentes opciones de ingredientes.

La clase de producto

Un enfoque es hacer que el constructor sea una interfaz, pero primero deberá crear una clase de producto. El producto de esta aplicación de muestra es una pizza.

instagram viewer
públicoclasePizza{
// propiedades
privadoEn t número de orden;
privado Cadena masa para pizza;
privado Cadena Adición;

// captadores y definidores
públicoEn tobtenerNúmeroPedido(){
devolver número de orden;
}

públicovacíoestablecerNúmeroPedido(En t número de orden){
este.orderNumber = orderNumber;
}

público Cadena obtenermasa de pizza(){
devolver masa para pizza;
}

públicovacíoconjuntopizzamasa(Cuerda de masa de pizza){
este.pizzaDough = pizzaDough;
}

público Cadena obtenerTopping(){
devolver Adición;
}

públicovacíosetTopping(relleno de cuerdas){
este.topping = topping;
}
}

La clase constructora

La pizza clase Java tiene tres propiedades y sus respectivos getters y setters, pero no hay métodos constructores. La interfaz del constructor le permitirá crear cada aspecto del objeto de pizza por separado. Luego le permitirá recuperar todo el objeto de pizza.

públicointerfazConstructor{
públicovacíocrearmasa de pizza();
públicovacíocrearTopping();
público Pizza obtenerPizza();
}

La aplicación de pizza de muestra permite a los clientes ordenar cualquier aderezo, como queso, pepperoni, cebolla o diferentes combinaciones. Por lo tanto, una pizza que ordenará un cliente es queso.

públicoclaseQuesoPizzaBuilderimplementosConstructor{
privado pizzería pizzería;

públicoQuesoPizzaBuilder(){
este.pizza = nuevo Pizza();
}

@Anular
públicovacíocrearmasa de pizza(){
este.pizza.setPizzaDough("Masa");
}

@Anular
públicovacíocrearTopping(){
este.pizza.setTopping("Queso");
}

@Anular
público Pizza obtenerPizza(){
devolvereste.pizza;
}
}

La clase CheesePizzaBuilder implementa la interfaz Builder y la usa para crear una nueva pizza de queso. Esta es una representación del objeto Pizza. También hace esto de forma independiente a la clase Pizza.

La clase CheesePizzaBuilder no sabe mucho sobre la clase Pizza, solo sabe lo que necesita saber para completar su función. Sabe que la clase Pizza tiene una masa y una propiedad de cobertura, y establece estas propiedades en dos valores específicos que tendrá cada pizza de queso. Ahora, cada vez que la aplicación llame a la clase CheesePizzaBuilder, creará una nueva pizza con cobertura de queso.

La clase de director

La clase de director es un aspecto crucial del patrón constructor. El único propósito de una clase constructora concreta es crear un objeto específico. Lo logra creando las diferentes partes de un objeto por separado.

Sin embargo, las clases concretas del constructor desconocen el algoritmo. Ninguna de las clases de constructores sabe cómo construir la masa antes de agregar la cobertura. Esta es la función de la clase director.

públicoclaseDirector{
privado Constructor constructor de pizzas;

públicoDirector(constructor constructor de pizzas){
este.constructorpizza = constructorpizza;
}

público Pizza obtenerPizza(){
devolvereste.constructorpizza.getPizza();
}

públicovacíoHaz pizza(){
este.pizzaBuilder.createPizzaDough();
este.pizzaBuilder.createTopping();
}
}

La clase Director usa la interfaz de constructor para hacer pizzas. Es el guardián del algoritmo.

Las ventajas de usar el patrón de diseño del constructor

La principal ventaja de usar el patrón de diseño del generador es su propiedad de encapsulación. Este es un aspecto crucial de la ingeniería de software, ya que ayuda en el desarrollo de aplicaciones seguras.

Otra ventaja de este patrón de diseño es su enfoque de construcción de objetos. Le permite crear procesos de varios pasos, donde cada paso es independiente, lo que facilita la depuración.