mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-15 12:59:00 +00:00
dc7495e8bd
* Typo corrections * bridge pattern translated to spanish * builder pattern translated to spanish * context-object pattern translated to spanish * converter pattern translated to spanish * dependency injection pattern translated to spanish * factory pattern translated to spanish * factory-kit pattern translated to spanish * factory-method pattern translated to spanish * monostate pattern translated to spanish * multiton pattern translated to spanish * object mother pattern translated to spanish * object pool pattern translated to spanish * property pattern translated to spanish * prototype pattern translated to spanish * registry pattern translated to spanish * step builder pattern translated to spanish * value object pattern translated to spanish * typo corrections and resources urls refactor * grammar corrections * Add image to each pattern --------- Co-authored-by: luismateoh <luismateohm@gmail.com> Co-authored-by: luis.hincapie <luis.hincapie@blankfactor.com>
124 lines
4.2 KiB
Markdown
124 lines
4.2 KiB
Markdown
---
|
|
title: Step Builder
|
|
category: Creational
|
|
language: es
|
|
tag:
|
|
- Instantiation
|
|
---
|
|
|
|
# Step Builder Pattern
|
|
|
|
## Explicación
|
|
|
|
El patrón Step Builder es un patrón de diseño de creación utilizado para construir un objeto complejo paso a paso.
|
|
Proporciona una interfaz fluida para crear un objeto con un gran número de configuraciones posibles, haciendo el código
|
|
más legible y reduciendo la necesidad de múltiples constructores o métodos setter.
|
|
|
|
## Propósito
|
|
|
|
Una extensión del patrón Builder que guía completamente al usuario a través de la creación del objeto sin posibilidades
|
|
de confusión.
|
|
La experiencia del usuario será mucho más mejorada por el hecho de que solo verá los métodos del siguiente paso
|
|
disponibles, NINGÚN método constructor hasta que sea el momento adecuado para construir el objeto.
|
|
|
|
## Ejemplo del mundo real
|
|
|
|
Imagine que está construyendo un objeto de configuración para una conexión a una base de datos. La conexión tiene varios
|
|
parámetros opcionales como host, puerto, nombre de usuario, contraseña y otros. Usando el patrón Step Builder, puedes
|
|
establecer estos parámetros de una forma limpia y legible:
|
|
|
|
```java
|
|
DatabaseConnection connection = new DatabaseConnection.Builder()
|
|
.setHost("localhost")
|
|
.setPort(3306)
|
|
.setUsername("user")
|
|
.setPassword("password")
|
|
.setSSL(true)
|
|
.build();
|
|
```
|
|
|
|
## En pocas palabras
|
|
|
|
El patrón Step Builder permite construir objetos complejos dividiendo el proceso de construcción en una serie de pasos.
|
|
Cada paso corresponde a la configuración de un atributo particular u opción de configuración del objeto. Esto resulta en
|
|
un código más legible y mantenible, especialmente cuando se trata de objetos que tienen numerosas opciones de
|
|
configuración.
|
|
|
|
## Wikipedia dice
|
|
|
|
Según Wikipedia, el patrón Step Builder es un patrón de diseño de creación en el que un objeto se construye paso a paso.
|
|
Implica una clase 'director' dedicada, que orquesta el proceso de construcción a través de una serie de clases '
|
|
constructoras', cada una responsable de un aspecto específico de la configuración del objeto. Este patrón es
|
|
particularmente útil cuando se trata de objetos que tienen un gran número de parámetros opcionales.
|
|
|
|
## Ejemplo programático
|
|
|
|
Suponiendo que tienes una clase `Producto` con varios atributos configurables, un Step Builder para ella podría tener
|
|
este aspecto:
|
|
|
|
```java
|
|
public class Product {
|
|
private String name;
|
|
private double price;
|
|
private int quantity;
|
|
|
|
// private constructor to force the use of the builder
|
|
private Product(String name, double price, int quantity) {
|
|
|
|
this.name = name;
|
|
this.price = price;
|
|
this.quantity = quantity;
|
|
|
|
}
|
|
|
|
public static class Builder {
|
|
private String name;
|
|
private double price;
|
|
private int quantity;
|
|
|
|
public Builder setName(String name) {
|
|
this.name = name;
|
|
return this;
|
|
}
|
|
|
|
public Builder setPrice(double price) {
|
|
this.price = price;
|
|
return this;
|
|
}
|
|
|
|
public Builder setQuantity(int quantity) {
|
|
this.quantity = quantity;
|
|
return this;
|
|
}
|
|
|
|
public Product build() {
|
|
return new Product(name, price, quantity);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Usage
|
|
Product product = new Product.Builder()
|
|
.setName("Example Product")
|
|
.setPrice(29.99)
|
|
.setQuantity(100)
|
|
.build();
|
|
```
|
|
|
|
Este ejemplo muestra cómo utilizar el patrón Constructor por pasos para crear un objeto `Producto` con un conjunto de
|
|
atributos personalizables. Cada método del constructor corresponde a un paso del proceso de construcción.
|
|
|
|
## Aplicabilidad
|
|
|
|
Utilice el patrón Step Builder cuando el algoritmo para crear un objeto complejo debe ser independiente de las partes
|
|
que componen el objeto y de cómo se ensamblan el proceso de construcción debe permitir diferentes representaciones para
|
|
el objeto que se construye cuando en el proceso de construcción el orden es importante.
|
|
|
|
## Otro ejemplo con diagrama de clases
|
|
|
|

|
|
|
|
## Créditos
|
|
|
|
* [Marco Castigliego - Step Builder](http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html)
|