見出し画像

🛠枝葉のようなcomposite(コンポジット)パターンとnode(ノード)の違い 

Composite パターンの例は、ほとんどすべてのオブジェクト指向システムで見つけることができます。

Composite (意味:複合)、というのが分かりづらいですが、合成と再起を表現したいよう。まさに永遠のシンボル。ちなみにコンポジットと名のついた植物があるそう。語源は花びらの集積

小さな花群から数百、時には数千の花が集まって一つの花のような構造を形成しています。

例えば、グループ化された図形を画面に表示するシステムを定義する場合、図形のグループをリサイズすることで、単一の図形をリサイズするのと同じ効果(ある意味で)が得られると定義しておくと便利です。

木構造と複合(composite)という言葉が結びつかなかったのだが、花の比喩ならわかり易いかもしれない。GoFで説明する構造も、木構造というよりはグラフィカルな表現で、線や四角、テキストをまとめる意味でのpictureという概念をcompositeと呼んでいるみたいで、花の集積をの事をcomposite flowerと呼ぶのに似ている。

ここではcomponentが花、leafが花びら,compositeがそれらをまとめる何かということになる。

Gofの例ではComponentがGraphic, Compositeがpictureとなっている。

配列とかスタックキューときて、次に木構造をおぼえる体裁になっている。アルゴリズムを学ぶ上でどうも基本になり、前に説明したプログラミングテクニックの本(https://amzn.to/37eXxKN)でも、しつこいぐらいにデータ構造の解説になる。GoFがこのパターンの名をTreeとかFolderとかBranchでなくcompositeとしたのはある程度の含みがあるようだ。

接点と合成Nodeという言葉

Compositeの例でしょっちゅう出てくるNodeというのは接点という意味がある。





お願い致します