Compositeパターン@Java言語によるデザインパターン入門

Java画像

参考書籍

Java言語で学ぶデザインパターン入門第3版

Compositeパターンとは?

参考書籍では以下のように説明されています。

容器と中身を同一視し、再起的な構造を作るデザインパターン

メリット

  • 複数個のものを集めて、あたかも1つのもののように取り扱うことができる
  • 再起的構造を簡単に作ることができる

サンプルコードを見ながら、メリットを解説していきます。

サンプルコード

ファイルとディレクトリを模式的に表現したプログラムを作成していきます。

UMLはこんな感じ。

Entryクラス

ディレクトリエントリを表す抽象クラス。

toString()メソッドではTemplateMethodパターンが使われています。

TemplateMethodパターンについては以下の記事を参照してください。

image TemplateMethodパターン@Java言語で学ぶデザインパターン入門

Fileクラス

ファイルを表現するクラスです。

Directoryクラス

ディレクトリを表すクラス。

ポイント以下の3点。

  1. Listの型をEntry型にしていることで、File,Directory 両方クラスのインスタンスをListに入れることができる(同一視)
  2. getSize()、printList()メソッドでFile,Directory両クラスのメソッドを意識して区別することなく呼べる(同一視)
  3. getSize()、printList()メソッドで再帰的呼び出しに対応している

Mainクラス

出力

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!