본문 바로가기
Today I learned

2021 08 13 - Builder Pattern

by soheemon 2021. 8. 13.

언제 사용할까

초기화 하는 '흐름'은 같은데, 로직이 서로 다른 객체들이 있을때 사용한다.

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 단어 요약 : 생성자 오버로딩 /** "Product" */ class Pizza {

ko.wikipedia.org

 

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

 

Design Patterns: Builder in Java

/ Design Patterns / Builder / Java Builder in Java Builder is a creational design pattern, which allows constructing complex objects step by step. Unlike other creational patterns, Builder doesn’t require products to have a common interface. That makes i

refactoring.guru

 

+ 위와 유사한 빌더패턴 예제가 더 있다.

https://stackoverflow.com/questions/56555419/is-this-the-right-way-to-make-builder-pattern-in-real-software-environment-in-s

 

is this the right way to make builder pattern in real software environment? in short what is the best way to create builder patt

is this the right way to create builder pattern in java, if not what could be possible changes. tried with static class public class Multiverse { private UUID universeId; private String

stackoverflow.com

 

댓글