나만 이해하도록 불친절하게 작성되어 있습니다.
자세한 내용은 책을 보세요.
Builder
- 요즘 많이 쓰는 API의 Builder 패턴과는 조금 다르다. 그건 immutable instance를 만들기 위해서 인스턴스 생성전에 이것 저것 값을 채워넣는 방식이고 여기서의 Builder 패턴은 무언가를 만드는 과정을 명세하고 실제로 만드는 구현은 분리한 것이다.
- Abstract Factory와 Factory Method와도 비슷한데 차이점은 Factory Method는 단일 product 생성을 완전히 추상화 하였고 Abstract Factory는 부품을 명세하되 조립과정은 Client가 작성하는데 비해 Builder 패턴에서는 Builder interface에서 하나의 product를 만들기 위한 부분 제작 과정을 명세하였다는 점이다.
- ConcreteBuilder는 명세를 따르면 제품이 나오도록 구현되어야 한다. 대신 최종 product는 따로 class화 하지 않았는데 그냥 Director가 ConcreteBuilder의 getResult()를 직접 호출한다. 이 부분이 좀 이상하긴 한데 Director의 construct()를 호출할 때에도 ConcreteBuilder를 넣어주어야 하고 Director는 명세를 호출할 뿐이긴 하지만 최종 결과물에서는 ConcreteBuilder를 알아야한다는 점에서 Director에게 ConcreteBuilder를 hide하는 패턴은 아니다. 제작 과정만 놓고 본다면, 즉 construct() 내부 구현이 ConcreteBuilder 교체로 인해 바뀌지 않는다는 점은 있다.
댓글 없음:
댓글 쓰기