LeoAndo / java-training

0 stars 0 forks source link

Composite #73

Open LeoAndo opened 2 years ago

LeoAndo commented 2 years ago

再起的な構造を持ったパターン。 これにIteratorパターンを適用するのは難しい。

Compositeパターン

例えばコンピュータのファイルシステムのように、ディレクトリとファイルをまとめてディレクトリエントリとして扱うように、容器と中身を同じ種類のものとして扱いたい場合に用いるデザインパターン。

ディレクトリとファイルをまとめて「ディレクトリエントリ」と呼ぶことがある。

Compositeパターンの登場人物

Leaf(葉)の役

「中身」を表す役です。この役の中には他のものを入れることはできません。サンプルプログラムのFileクラスに該当。

Composite (複合体)の役

「容器」を表す役です。Leaf役やComposite役を入れることができます。サンプルプログラムのDirectoryクラスに該当。

Componentの役

LeafややComposite役を同一視するための役です。Composite役は、LeafとComposite役に共通のスーパークラスとして実現します。サンプルプログラムのEntryクラスに該当。

Client(依頼者)の役

Compositeパターンの利用者です。サンプルプログラムのMainクラスに該当。

LeoAndo commented 1 year ago

クラス図

image

image