- 구조를 가지고 있는 큰 것을 구축한다
- 복잡한 구조를 가지는 것을 한번에 완성하는 것은 어렵다
- 구조를 이루는 각 부품을 하나씩 만들어 가는 방법
장점
- 코드 읽기 / 유지보수가 편하다
- 객체 생성을 깔끔하게 할 수 있다
public class Text {
private String text;
private Text() {}
@Override
public String toString() {
return text;
}
public static class Builder{
private String title;
private String content;
private String [] items;
public Builder setTitle(String title){
this.title = title;
return this;
}
public Builder setContent(String content){
this.content = content;
return this;
}
public Builder setItems(String... items){
this.items = items;
return this;
}
public Text build(){
Text text = new Text();
StringBuilder sb = new StringBuilder();
sb.append("타이틀 : ").append(title).append("\n");
sb.append("내용 : ").append(content).append("\n");
sb.append("항목 : ").append("\n");
for(String item : items){
sb.append("-").append(item).append("\n");
}
text.text = sb.toString();
return text;
}
}
}
public class Main {
public static void main(String[] args) {
Text text = new Text.Builder()
.setTitle("안녕")
.setContent("내용")
.setItems("항목1", "항목2", "항목3")
.build();
System.out.println(text);
}
}
- 만약 빌더 패턴을 사용하지 않으면?
- 생성자 조합의 경우의 수를 모두 만들어줘야 하는 일이 생길 것이다.
- 아래처럼?
public class Text {
private String text;
private String title;
private String content;
private String [] items;
public Text(String title, String content) {
this.title = title;
this.content = content;
}
public Text(String title, String content, String[] items) {
this.title = title;
this.content = content;
this.items = items;
}
public Text(String content, String[] items) {
this.content = content;
this.items = items;
}
public Text(String[] items) {
this.items = items;
}
@Override
public String toString() {
return text;
}
}
'디자인패턴' 카테고리의 다른 글
어댑터 패턴 (0) | 2022.12.21 |
---|---|
싱글톤 패턴 (0) | 2022.12.21 |
팩토리 메서드 패턴 (0) | 2022.12.20 |