Java言語で学ぶデザイパターン入門 7章 Builder

Java言語で学ぶデザインパターン入門

Java言語で学ぶデザインパターン入門

・Builder役
インスタンスを生成するためのインタフェースを定める
・ConcreteBuilder役
Builderのインタフェースを実装したクラス
成果物を得る為のメソッドはこちらに定義
・Director役
Builderのインタフェースを使ってインスタンスを生成
・Client役
Builderを利用する役

Builder役でインスタンスを生成するための機能を提供するが、呼び出しの順番は制御せず、Directorが順番を制御する
→Builderは各メソッドがどの順番で呼ばれてもOKな作りにしたほうがよい?
Builderのもつ複雑なインスタンス生成過程を、Directorを使うことによって外部からは簡単につくれるようになる。
Facadeパターンのインスタンス生成版みたいな感じ。

成果物を得るメソッドはConcreteBuilderが持つのはなぜだろう?
・Directorに持たせようとしたらBuilderのメソッドでなければならない
・Builderに持たせたとしてもClientはBuilderを意識しないので意味が無い
・Directorのコンストラクタなり何なりにConcreteBuilderは渡すので、ClientはConcreteBuilderを意識せざるを得ない
から、やはりConcreteBuilderに持たせるしかないのか。。。なんか微妙な感じがするけどこんなところか。