Builder Pattern 빌더 패턴
생성자를 이용해 객체를 생성할 때 더 편리하게 해주는 디자인 패턴입니다.
객체의 구성요소(변수)가 많은 경우, 객체 생성자의 input 요소가 많은 경우에는 아래와 같이 생성자가 길어지고 복잡하게 됩니다. 이런 경우 어느 한 요소가 빠지게 되거나, 요소의 순서가 뒤바뀐 경우 에러를 찾아내기가 어려워집니다.
또는 구성요소가 없어지거나, 추가 될때마다 새로운 생성자를 만들어주어야 합니다. 이런 불편함을 해소하고, 객체를 생성할 때 input 요소를 하나씩 넣어줄 수 있도록 해주는 패턴이 빌터 패턴입니다.
public class Object{
private String a;
private String b;
private String c;
private String d;
private String e;
private String f;
private String g;
private String h;
private String i;
public Object(String a, String b, String c, String d,
String e, String f, String g, String h, String i ){
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
}
}
Object object = new Constructor(a, b, c, d, e, f, g, h, i);
빌더 패턴의 장단점
장점
- 객체 생성을 단계적으로 진행할 수 있고, 각 단계를 반복할 수도 있습니다.
- 동일한 객체 생성 코드를 다른 생성자 형식에서도 재사용할 수 있습니다.
- 비즈니스 로직에서 복잡한 생성자 로직을 분리할 수 있습니다.
단점
- 클래스가 많아질수록 코드의 전체적인 복잡도는 늘어날 수 있습니다.
Builder Pattern 빌더 패턴 구현
public class ObjectBuilder {
private String a;
private String b;
private String c;
private String d;
public ObjectBuilder setA(String a){
this.a = a;
return this;
}
public ObjectBuilder setB(String b){
this.b = b;
return this;
}
public ObjectBuilder setC(String c){
this.c = c;
return this;
}
public ObjectBuilder setD(String d){
this.d = d;
return this;
}
public Object build(){
return new Object(a,b,c,d);
}
}
빌터패턴은 아래와 같이 사용합니다.
ObjectBuilder builder = new ObjectBuilder();
Object object = builder.setA("a").setC("C").setB("B").setD("D").build();
* lombok 패키지를 사용하면 builder 패턴을 간편하게 사용할 수 있습니다. https://projectlombok.org/
참조
'JAVA > DesignPattern' 카테고리의 다른 글
Design Pattern 디자인패턴 Adapter Pattern 어답터 패턴 (0) | 2021.12.16 |
---|---|
Design Pattern 디자인패턴 Prototype Pattern 프로토타입 패턴 (0) | 2021.12.15 |
Design Pattern 디자인패턴 Singleton Pattern 싱글톤 패턴 (0) | 2021.12.14 |
Design Pattern 디자인 패턴 Abstract Factory Pattern 추상 팩토리 패턴 (0) | 2021.12.13 |
Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴 (0) | 2021.12.07 |