Composite
Compositeとは、オブジェクト指向プログラミングにおいてギャング・オブ・フォーら4人により提案された23種類のデザインパターンの1つです。このデザインパターンはオブジェクトの構造に関するパターンです。
このCompositeパターンは、一言でまとめるとオブジェクト指向プログラミングにおいて、「容器に入れる内容物」と「内容物を入れる容器」の二つの役割を一つにまとめ、「容器と内容物を同一化する」というパターンです。大きな箱には小さな箱が入り、その小さな箱にはさらに小さな箱が入る、というようないわゆる入れ子の構造を示しているパターンです。例えるならば、パソコンのファイルとフォルダの関係のように、フォルダの中にファイルとフォルダが入れることができその中のフォルダにもファイルを入れられるというようなイメージです。
Compositeは、Compositeパターンのクラスを設計し、その派生先の子クラスの中に自身のインスタンス変数を含んでいます。このときインスタンス変数を配列のように複数用意することが一般的です。自身の親クラスのインスタンスを含むだけで、複雑な入れ子構造を実現することが可能です。