まだ不十分かもしれませんが、理解できたとこまで。

Compositeパターンは、容器と中身を同一視する再帰的な構造を言います。
このパターンを利用することで、容器の中に容器でも、中身でも入れることができるようになります。
前々回の課題で考えると、GratorConditionクラスでtrueかfalseを返すこともできるし、GratorConditionクラスで返した結果をさらにOrConditionクラスやAndConditionクラスで検討し、返すこともできるようになります。
このようにインターフェースや抽象クラスを作って、容器と中身を同一視し、容器の中に容器を作ったりして入れ子状態にすることで、Compositeな構造のクラスにどんなオブジェクトや変数を委託しても処理してくれるようになります。

ジェネリックスに関して、自由な変数でクラスを使用することができる利点は、
そのクラスの引数やメソッドの引数が何であっても、(例えオブジェクトであっても)処理ができるようになり、
なおかつ、ユーザが決めた変数に限定して使えるという点です。

カテゴリー: 技術情報

2件のコメント

yamaguchi · 2007-06-21 11:19

CompositeパターンはStrategyパターンの特別な場合と覚えておくといいよ。Strategyとそれへ処理委譲するクラスのインターフェイスが同じ場合にCompositeになる。

そんな感じに、各パターン間の違いを言えるようになると整理されてよい気がするぞ。

前々から気になってたんだけど、Gratorってなに?Greater?

koreyasu · 2007-06-21 18:07

容器と中身の例としては
・フォルダとファイル
・住所(国-県-市-町など)
・プレイリストと単体の音楽ファイル
身近なものから仮想なものまで色々あります。

現在コメントは受け付けていません。