언제 사용할까
초기화 하는 '흐름'은 같은데, 로직이 서로 다른 객체들이 있을때 사용한다.
1) 그 '흐름'을 Builder라는 interface (혹은 abstract class)로 나타내고,
2) 구체적인 로직은 Builder를 implement한 class에 설명되어있다. (Concrete Builder)
3) 그리고 Director는 Concrete Builder를 주입받아서 Builder의 흐름에 따라 로직을 실행한다.
아이고 말로 설명하려니 힘드네.. 개인적으로 위키피디아에 나와있는 예제 코드가 이해하기 좋았다.
https://ko.wikipedia.org/wiki/%EB%B9%8C%EB%8D%94_%ED%8C%A8%ED%84%B4
2) return this를 중심으로, methods chBuilder
jdk의 Builder 예제를 찾아보니까.
java.lang.StringBuilder#append()가 나온다.
? StringBuilder는 이름에 Builder가 들어가지만, 앞에서 살펴본 빌터 패턴과는 조금 다른것 같다.
StringBuilder는 methods 체이닝을 지원한다.(append메서드 안에서 return this한다.)
sb객체를 만들어서 append를 연속적으로 호출할 수 있다.
마지막에 String 객체가 완성되면 sb.toString()으로 String 완성 가능..!
때문에 빌더패턴이라고 불리는듯.. 쩜쩜 ...? 사실 잘 모르겠다.
for example, someBuilder->setValueA(1)->setValueB(2)->create()
https://refactoring.guru/design-patterns/builder/java/example
+ 위와 유사한 빌더패턴 예제가 더 있다.
'Today I learned' 카테고리의 다른 글
2021 09 06 - 문제 해결을 위한 JAVA8 학습 - Stream (0) | 2021.09.06 |
---|---|
2021 08 25 개발자를 위한 코드 분석 방법 (JICA) 강의 수강 (0) | 2021.08.27 |
2021 08 10 - Abstract Factory (0) | 2021.08.10 |
2021 08 10 - Factory Method (0) | 2021.08.10 |
UML(Unified Modeling Language) 훑어보기 (0) | 2021.08.10 |
댓글