概念的な例
この例は、 Composite デザインパターンの構造を説明するためのものです。 以下の質問に答えることを目的としています:
- どういうクラスからできているか?
- それぞれのクラスの役割は?
- パターンの要素同士はどう関係しているのか?
ここでパターンの構造を学んだ後だと、 これに続く、 現実世界の PHP でのユースケースが理解しやすくなります。
index.php: 概念的な例
Output.txt: 実行結果
現実的な例
Composite パターンは、 どんな再帰的ツリー構造に対する作業でも、 効率よく処理できるようにします。 HTML の DOM ツリーはそのような構造の例です。 たとえば、 種々の入力要素はリーフ (葉) として機能しますが、 フォームやフィールドセットはコンポジットの役割を果たします。
Composite パターンは、 さまざまな振る舞いを、 HTML の DOM ツリー全体にも、 内部要素にでも、 同様に適用できます。 それを、 DOM ツリーの具象クラスに自分のコードを結合することなく行えます。 そのような行動の例としては、 DOM 要素の描画や、 種々の形式でのエクスポート、 部品の検証などがあります。
Composite パターンを使うと、 振る舞いを実行する前に要素が単純要素か複合要素かをいちいちチェックする必要はありません。 要素の種類に応じて、 ただちに実行されるか、 要素の子全員に渡されます。
index.php: 現実的な例
Output.txt: 実行結果