본문
Builder Pattern
프로그래밍/디자인패턴 2015. 8. 30. 20:50
반응형
뭔가가 만들어 지는 과정은 꽤나 복잡할 수가 있습니다. 게다가 그 복잡한 과정이 순서대로 실행되어야 할 때도 있습니다.
객체의 생성에 있어서 이런 복잡한 과정들을 분리해 내는 것이 Builder 패턴입니다. (ex : 다리만들기 메소드, 팔만들기 메소드)
💡 source
// 객체 생성과정을 관리하는 빌더 인터페이스
public interface 빌더 {
void 팔만들기();
void 다리만들기();
영웅 결과물보여줘();
}
// 복잡한 영웅 객체를 실제로 만들어내는 빌더의 구현체인 배트맨 찍어내는 클래스
public class 베트맨빌더 implements 빌더 {
private 영웅 베트맨;
베트맨빌더() {
베트맨 = new 영웅("베트맨");
}
public void 팔만들기() {
베트맨.set팔("강철");
}
public void 다리만들기() {
베트맨.set다리("무쇠");
}
public 영웅 결과물보여줘() {
return 베트맨;
}
}
public class 빌더관리자 {
private 빌더 빌더;
public 빌더관리자(빌더 빌더) {
this.빌더 = 빌더;
}
public void 빌더() {
빌더.팔만들기();
빌더.다리만들기();
}
public 영웅 get영웅() {
return 빌더.결과물보여줘();
}
}
public class 영웅 {
private String 팔재료;
private String 다리재료;
private String 이름;
public 영웅(String 이름) {
super();
this.이름 = 이름;
}
public void set팔(String 팔재료) {
this.팔재료 = 팔재료;
}
public void set다리(String 다리재료) {
this.다리재료 = 다리재료;
}
public void 결과물보여줘() {
System.out.println(팔재료 + "로만든 팔과" + 다리재료 + "로 만든 다리를 가진" + 이름);
}
}
public class Main {
public static void main(String[] args) {
빌더 빌더 = new 베트맨빌더();
빌더관리자 빌더관리자변수 = new 빌더관리자(빌더);
// 팔만들기, 다리만들기 메소드 실행
빌더관리자변수.빌더();
영웅 영웅변수 = 빌더관리자변수.get영웅();
영웅변수.결과물보여줘();
}
}
💡 결과
강철로만든 팔과무쇠로 만든 다리를 가진베트맨
반응형
댓글