MyEnigma

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

C++によるデザインパターン12: Decorator パターン


Decorator パターン

Decratorパターンは、

あるクラスのオブジェクトをラッピングするようなクラスを作成し、

それらを使って多種多様なクラスを作成するデザインパターンです。


あるクラスの機能を追加する場合に、

そのクラスのオブジェクト(ポインタ)を渡して

新しいクラスオブジェクトを作成するようなクラスを作成します。


単純に元のクラスのオブジェクトをサブクラスに渡すだけでは、

Strategyパターンと同じように思えますが、

C++によるデザインパターン10: Strategy パターン - MY ENIGMA

Decoratorパターンでは、

クラスのAPIを同じものを使用する

(仮想クラスのインターフェースを使用する)ことによって、

ユーザにとっては、

元のクラスと新しいクラスの使用方法が変わっていないため、

使いやすいクラスを作成することができます。


また、機能追加する時にDecoratorパターンを使用することにより、

インスタンスを渡すだけなので、

元のクラスの中身を変更することなく、

機能追加できるようになります。

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

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

cpp/Decorator.cpp at master - AtsushiSakai/cpp

MyEnigma Supporters

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

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

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

myenigma.hatenablog.com