Builderパターンの実装 #17

AbstractFactoryパターンに近いもよう。
Builderはディレクタと呼ばれる役割のクラスにビルダークラスをセットして必要なオブジェクトを生成する。
ビルダークラスは生成したいオブジェクトによって異なるが API は統一されているためディレクタと疎結合関係になっている。
実質的にはディレクタクラスの内部にビルダークラスを持ち、機能実装部分をビルダークラスが行うため、ビルダークラスが委譲関係になっている。

AbstractFactoryとの違いは、AbstractFactoryの場合Factoryを介してクラスを取得するにとどまったが、Builderではディレクタは生成した実装クラスは返さずディレクタ内で生成した実装クラスを所持したまま実装クラスを操作する点。実装クラスを取得するわけではない。
差別化が少々難しい。