El patrón de diseño Builder: un enfoque práctico para construir objetos complejos
Published: 2024-01-07 16:23:31

Este post forma parte de una serie en la que estaremos desglosando uno por uno los distintos patrones de diseño de manera teórica en un blog post. Además, subiré la explicación práctica a [mi canal de YouTube](https://www.youtube.com/c/wiar8). ¡No olvides seguirme para no perderte este interesante contenido! 😁


En el mundo de la programación orientada a objetos, es común tener que crear objetos complejos. Estos objetos pueden tener una gran cantidad de propiedades y atributos, y su construcción puede ser un proceso tedioso y repetitivo.

Para simplificar este proceso, podemos utilizar el patrón de diseño Builder. Este patrón nos permite construir objetos paso a paso, de forma que podamos controlar cada detalle de su creación.

![Houses](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1i6vrdgukwny11hmmmae.jpeg)

## ¿Qué es el patrón de diseño Builder?

El patrón de diseño Builder es un patrón de creación que permite construir objetos de forma sencilla y organizada. Este patrón se utiliza cuando tenemos una clase con una gran cantidad de parámetros, y queremos crear una interfaz clara para construir objetos de esa clase.

El patrón de diseño Builder tiene dos clases principales:

- Producto: Esta clase representa el objeto que queremos construir.

- Builder: Esta clase es la encargada de construir el objeto.

El objeto Builder tiene una serie de métodos que nos permiten configurar las propiedades del objeto Producto. Por ejemplo, si queremos construir una pizza, el objeto Builder podría tener métodos para configurar el tamaño de la pizza, el tipo de masa, los ingredientes y el precio.

Una vez que hemos configurado todas las propiedades del objeto Producto, podemos utilizar el método build() del objeto Builder para obtener el objeto completamente construido.

## Ventajas del patrón de diseño Builder

El patrón de diseño Builder tiene una serie de ventajas, entre las que destacan:

- Simplifica la construcción de objetos. El patrón de diseño Builder nos permite construir objetos paso a paso, de forma que podamos controlar cada detalle de su creación.

- Permite la construcción de diferentes representaciones de un mismo objeto. El patrón de diseño Builder nos permite crear diferentes representaciones de un mismo objeto, simplemente creando diferentes subclases de la clase Builder.

- Mejora la legibilidad y mantenibilidad del código. El patrón de diseño Builder hace que el código sea más legible y mantenible, ya que separa el proceso de construcción del objeto de la clase que representa el objeto.

## Implementación del patrón de diseño Builder en JavaScript

Para implementar el patrón de diseño Builder en JavaScript, podemos utilizar la siguiente estructura:


```JavaScript
// Clase Producto
class Pizza {
  constructor(size, crust, ingredients, price) {
    this.size = size;
    this.crust = crust;
    this.ingredients = ingredients;
    this.price = price;
  }
}

// Clase Builder
class PizzaBuilder {
  constructor() {
    this.pizza = new Pizza();
  }

  setSize(size) {
    this.pizza.size = size;
    return this;
  }

  setCrust(crust) {
    this.pizza.crust = crust;
    return this;
  }

  setIngredients(ingredients) {
    this.pizza.ingredients = ingredients;
    return this;
  }

  setPrice(price) {
    this.pizza.price = price;
    return this;
  }

  build() {
    return this.pizza;
  }
}

// Ejemplo de uso
const pizzaBuilder = new PizzaBuilder();

pizzaBuilder
  .setSize("large")
  .setCrust("thin")
  .setIngredients(["cheese", "pepperoni", "sausage"])
  .setPrice(15.99);

const pizza = pizzaBuilder.build();
```

En este ejemplo, la clase Pizza representa el objeto complejo que queremos construir. La clase PizzaBuilder es la encargada de construir el objeto Pizza.

El método setSize() permite configurar el tamaño de la pizza. El método setCrust() permite configurar el tipo de masa. El método setIngredients() permite configurar los ingredientes. El método setPrice() permite configurar el precio.

El método build() devuelve el objeto Pizza completamente construido.

## Conclusiones

El patrón de diseño Builder es una herramienta útil que nos permite simplificar la construcción de objetos complejos. Este patrón es especialmente útil cuando tenemos que construir objetos con una gran cantidad de propiedades y atributos.

En el caso del frontend con JavaScript, el patrón de diseño Builder puede ser utilizado para construir objetos complejos como formularios, componentes UI o

😁 Si este post te ha gustado, puedes seguirme en mi canal de [YouTube ](https://www.youtube.com/c/wiar8) en el cual subo contenido relacionado a la programación 🐢