Builder パターン試行 (6) ~Director 排除~
2008/10/04 21:44 - デザインパターン
Builder パターンは Director を経由して個別 Builder を操作します。
でも別に Director って要らなくない? ということを Builder パターンの基本に忠実なコードを書いて思った、というのが前回までの話でした。
だったら Director なしのコーディングがどうなるのか、実際に書いてみようじゃないの、というのが今回の話。
早速コーディングしたファイルの列挙
- Main.as (ドキュメントクラス)
- Builder.as (抽象ビルダクラス)
- 個別 Builder
- LineCircleBuilder.as (線のみの円形を描画)
- LineRectBuilder.as (線のみの方形を描画)
- FillCircleBuilder.as (塗りのみの円形を描画)
- FillRectBuilder.as (塗りのみの方形を描画)
- LineFillCircleBuilder.as (線と塗りの円形を描画)
- LineFillRectBuilder.as (線と塗りの方形を描画)
- SimpleDrawn.as (描画エンジンクラス 前回と同じ)
前回までの個別 Builder は CircleBuilder と RectBuilder の二つだけでしたが、今回は描画方法が、線のみ、塗りのみ、線と塗りの両方、の3パターンをそれぞれ別の Builder としてみました。 種類は増えていますが、構造的には変化なし。
変更点は Director クラスの削除に伴う、抽象 Builder クラスの改造となります。
以下に前回までの Director クラスと抽象 Builder クラスを再掲します。
- Director.as (ディレクタクラス)
- Builder.as (抽象ビルダクラス)
今回の抽象 Builder と、前回までの Director、抽象 Builder を見較べるとお分かりのとおり、前回 Director.constract() メソッドでおこなっていたことを、今回は Builder.draw() メソッドでおこなうようにしました。
で、Builder.draw() メソッドは、Builder.getResult() メソッドで呼び出されます。
Builder.getResult() メソッドはドキュメントクラスから呼び出されますが、この点は前回と同じ。
ドキュメントクラスでは、個別 Builder のインスタンスを生成して、その個別 Builder の gerResult メソッドを呼び出す。
Director と Builder を協業させるよりも、Builder 単体だけで処理が済む方がスッキリしてキレイなんじゃあないでしょうか。