Generalidades

Patrón de diseño del constructor – java.Definición del patrón constructor | Por Gaurav Kumar Tyagi | Enero de 2022

Gaurav Kumar Teji

El patrón Builder es un patrón de diseño creativo que le permite construir objetos complejos de forma incremental.

Este patrón no es muy útil cuando tienes un objeto simple, pero puedes usarlo sin dudarlo cuando empiezas a tener un objeto más complejo y quieres un código limpio.

Crear clase interna estática nUnamed Builder (PersonBuilder) a pojo (Clase de persona). Agregue los mismos campos desde el pojo. Agregue también constructores y setters vacíos para cada campo, con un tipo de retorno de la clase Builder (PersonBuilder). Por último, pero no menos importante, la compilación del método agregado devolverá una nueva instancia del objeto Person.

public class Person {

private final String firstName;
private final String lastName;
private final int age;
private final String height;
private final String weight;
private final String eyesColor;
private final String hairColor;
private final String birthPlace;
private final Date birthDate;
private final int numberOfSibling;
private final boolean married;

// Private Constructor
private Person(PersonBuilder builder){
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.height = builder.height;
this.weight = builder.weight;
this.eyesColor = builder.eyesColor;
this.hairColor = builder.hairColor;
this.birthPlace = builder.birthPlace;
this.birthDate = builder.birthDate;
this.numberOfSibling = builder.numberOfSibling;
this.married = builder.married;
}

// Static Inner Class with same parameters
public static class PersonBuilder{

private String firstName;
private String lastName;
private int age;
private String height;
private String weight;
private String eyesColor;
private String hairColor;
private String birthPlace;
private Date birthDate;
private int numberOfSibling;
private boolean married;

public PersonBuilder(){} public PersonBuilder setFirstName(String firstName){
this.firstName = firstName;
return this;
}

public PersonBuilder setLastName(String lastName){
this.lastName = lastName;
return this;
}

public PersonBuilder setAge(int age){
this.age = age;
return this;
}

public PersonBuilder setHeight(String height){
this.height = height;
return this;
}

public PersonBuilder setWeight(String weight){
this.weight = weight;
return this;
}

public PersonBuilder setEyesColor(String eyesColor){
this.eyesColor = eyesColor;
return this;
}

public PersonBuilder setHairColor(String hairColor){
this.hairColor = hairColor;
return this;
}

public PersonBuilder setBirthPlace(String birthPlace){
this.birthPlace = birthPlace;
return this;
}

public PersonBuilder setBirthDate(Date birthDate){
this.birthDate = birthDate;
return this;
}

public PersonBuilder setNumberOfSibling(int numberOfSibling){
this.numberOfSibling = numberOfSibling;
return this;
}

public PersonBuilder setMarried(boolean married){
this.married = married;
return this;
}

public Person build(){
Person person = new Person(this);
return person;
}
}
}

Person person = new Person.PersonBuilder()
.setFirstName("Gaurav Tyagi")
.setAge(30)
.setBirthPlace("India")
.setMarried(true)
.setNumberOfSibling(2)
.build();

LEER  Publicidad en reconocimiento de huellas dactilares y malos incentivos: "El sistema está roto por diseño"

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba