Builder Pattern
- Handle complex constructors
- Large number of parameters
- Immutability
- Ex
- LaunchBuilder is the static inner class
- Each method from LaunchBuilder is the equivalent to the setters
- In this way the result class "LauchOrder" cannot be modified, only have getters
public class LaunchOrder {
public static class LaunchBuilder {
private String bread;
private String meat;
private String dressing;
private String condiments;
public LaunchBuilder(){
}
public LaunchOrder build(){
return new LaunchOrder(this);
}
public LaunchBuilder bread(String bread){
this.bread = bread;
return this;
}
public LaunchBuilder meat(String meat){
this.meat = meat;
return this;
}
public LaunchBuilder dressing(String dressing){
this.dressing = dressing;
return this;
}
public LaunchBuilder condiments(String condiments){
this.condiments = condiments;
return this;
}
}
private final String bread;
private final String meat;
private final String dressing;
private final String condiments;
public LaunchOrder(LaunchBuilder lb){
this.bread = lb.bread;
this.meat = lb.meat;
this.dressing = lb.dressing;
this.condiments = lb.condiments;
}
public String getBread() {
return bread;
}
public String getMeat() {
return meat;
}
public String getDressing() {
return dressing;
}
public String getCondiments() {
return condiments;
}
}
------------------ Main ----------------
public static void main(String[] args) {
LaunchOrder.LaunchBuilder lb = new LaunchOrder.LaunchBuilder();
lb.bread("pan de ajo").condiments("cebolla").meat("jamon");
LaunchOrder lo = lb.build();
System.out.println(lo.getBread());
}
Comentarios
Publicar un comentario