MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

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


Composite パターン

Compositeパターンは、

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

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

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

デザインパターンです。


一般的には、

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

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


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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

cpp/DesignPattern/Composite at master-AtsushiSakai/cpp

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com