Builder Pattern
개요
- 2가지 종류의 Builder Pattern 존재
> Effective Java의 Builder Pattern = 생성자 인자가 많을 때
> GoF의 Builder Pattern = 생성 절차가 복잡할 때
구현 방법 - Java
public class main {
public static void main(String[] args) {
// Cut gunCut = new Cut("군인컷", 2, 1, 1); // [1]
// Cut gunCut = new Cut(); // [2]
// gunCut.setStyle("군인컷");
// gunCut.setFront(2);
// gunCut.setBack(1);
// gunCut.setSide(1);
// gunCut.status();
Cut gunCut = new Cut().setStyle("군인컷");
Cut c = Cut.builder() // [3]
.setStyle("군인컷")
.setFront(2)
.setBack(1)
.setSide(1);
gunCut.status();
}
}
class Cut {
private String Style;
private int front;
private int back;;
private int side;
static public Cut builder() {
return new Cut();
}
public Cut setStyle(String name ) { this.Style = name; return this;} // [4]
public Cut setFront(int front) { this.front = front; return this;}
public Cut setBack (int back ) { this.back = back ; return this;}
public Cut setSide (int side ) { this.side = side ; return this;}
public void status () {
System.out.println("Style ="+Style);
System.out.println("Front ="+front);
System.out.println("Back ="+back );
System.out.println("Side ="+side );
}
}
- [1] Design pattern이 적용되지 않은 경우 적용 방법 - 1
- [2] 가독성을 높여서 Attribute를 Setting 하는 method 로 구현
- [3] Design pattern 적용 후 중복요소 제거된 부분
- [4] return 을 통해서 코드 개선
구현 방법 - Python
class Cut():
def __init__(self, *, style, front, back, side):
self.__style = style
self.__front = front
self.__back = back
self.__side = side
@property
def style(self):
return self.__style
@property
def front(self):
return self.__front
@property
def back(self):
return self.__back
@property
def side(self):
return self.__side
def status(self):
print("Style =", self.__style)
print("front =", self.__front)
print("back =", self.__back)
print("side =", self.__side )
cut = Cut(style="Solder", front=1, back=1, side=1)
cut.status()
- Python에서는 큰 의미 없음
'Software Architect' 카테고리의 다른 글
[Design Pattern] Facade Pattern (0) | 2022.03.24 |
---|---|
[Design Pattern] Singleton Pattern (0) | 2022.03.24 |
[Design Pattern] Factory Method Pattern (0) | 2022.03.24 |
[Design Pattern] GoF Design Pattern 개요 (0) | 2022.03.24 |
[OOAD] UML & 주요 diagram (0) | 2022.03.21 |