MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

C++によるデザインパターン11: Composite パターン

増補改訂版 Java言語で学ぶデザインパターン入門

増補改訂版 Java言語で学ぶデザインパターン入門

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

  • 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 1999/10
  • メディア: 単行本
  • 購入: 21人 クリック: 711回
  • この商品を含むブログ (212件) を見る


Composite パターン

Compositeパターンは、

ある入れ物と、その中にあるデータの

共通部分を抽象クラスで切り出し、

入れ物とデータを同じようなオブジェクトとして扱う

デザインパターンです。


一般的には、

コンピュータのディレクトリとその中のファイルの関係を

コーディングする時などに使うと便利です。


またこのCompositeパターンでは、

入れ物の中に入れ物がある形をとるため、

おのずと再帰的で、ツリー形状の構造になります。


入れ物クラスのオブジェクトは、

オブジェクトが持っているデータを

先ほどの抽象クラスの形でもっているため、

その中身が入れ物であるのか、

それともデータであるのかを考えずに

アクセスすることができます。


上手くこのパターンを利用することで、

オブジェクトの種類を問わずに、

コピーや追加、削除など、

普通のPCではOSが行ってくれることのシンプルなバージョンを

自作してみることができるのです。

C++によるサンプルコード

下記のGitHubページにて公開しています。

cpp/DesignPattern/Composite at master-AtsushiSakai/cpp