Composite は、 構造に関するデザインパターンの一つで、 オブジェクトを木のような構造に構成し、 あたかも単一のオブジェクトであるかのように扱えるようにします。
Composite は、 ツリー構造の構築を必要とする問題の大部分の解決策として、 かなりの人気を得るようになりました。 Composite の大きな特徴は、 ツリー構造全体でメソッドを再帰的に実行し、 結果をまとめあげることです。
複雑度:
人気度:
使用例: Composite パターンは、 TypeScript コードではよく見かけます。 ユーザー・インターフェースのコンポーネントの階層構造の表現や、 グラフに対して動作するコードで多く使われます。
見つけ方: オブジェクト・ツリーがあって、 ツリーのそれぞれのオブジェクトが同じクラス階層の部分であれば、 十中八九、 コンポジットです。 もしこれらのクラス中のメソッドが、 ツリーの子オブジェクトに仕事を委任し、 それを階層の基底クラスやインターフェースを介して行うなら、 これは間違いなくコンポジットです。
概念的な例
この例は、 Composite デザインパターンの構造を説明するためのものです。 以下の質問に答えることを目的としています:
- どういうクラスからできているか?
- それぞれのクラスの役割は?
- パターンの要素同士はどう関係しているのか?
index.ts: 概念的な例
Output.txt: 実行結果
他言語での Composite