Builder パターン試行 (5) ~Director~
2008/09/26 22:17 - デザインパターン
今まで三回にわたって、Builder パターンを基本に忠実にコードタイプしたらどうなるのか、という話をしてきました。
で、実際に手を動かしてコードを書いてきて、割と大きな疑問にぶち当たったのです。 前回の最後でもチコっと触れましたが……
Director クラスって必要なの?
オレは Director クラスの必然性が全然分かりません。
前回示したドキュメントクラスにおける流れの模式コードを再掲します。
var 個別ビルダ:CircleBuilder = new CircleBuilder(); var ディレクタ:Director = new Director(個別ビルダ); ディレクタ.constract(); var 成果物:Shape = 個別ビルダ.getResult();
ディレクタ.constract の内容も再掲します。
public function constract():void { builder.setType(); builder.setSize(); builder.setFillProp(); builder.setLineProp(); builder.draw(); }
ディレクタ.constract は builder のメソッドにアクセスしているだけです。 これってビルダの getResult 内で実行すればビルダだけで完結するじゃん。 だったら Director って要らないんじゃないの、というのが私の達した結論です。
もちろんパターンというのはあくまでも指針といったようなものだから、バカ正直に全く同じクラス群を使ってコーディングをしなければいけない、というものではないのは分かります。 参考にするくらいの付き合いで良いのでしょう。 Director が要らないと思ったらそんなの使わずに Builder を直接操作すれば良いじゃん、というのは重々承知。
しかしデザインパターンというのは、その起源がたった4人のコーディングノウハウだとは言え、その4人は有能なコーダーだったんだろうし、また、それなりの時間を大勢の目に晒されてきた中での現在のパターン。 そんな状況を生き延びてきた Director クラスにはなんらかの意義があるんだと思うんですよね。 その意義を私は知りたい。
先達のご助言を賜れたらと思います。
と、言ってるそばから、次回はゴーイング・マイ・ウェイで Director リストラ後の Builder パターンの各クラスのコーディングを試してみたいと思います。