Decorator パターン
Decratorパターンは、
あるクラスのオブジェクトをラッピングするようなクラスを作成し、
それらを使って多種多様なクラスを作成するデザインパターンです。
あるクラスの機能を追加する場合に、
そのクラスのオブジェクト(ポインタ)を渡して
新しいクラスオブジェクトを作成するようなクラスを作成します。
単純に元のクラスのオブジェクトをサブクラスに渡すだけでは、
Strategyパターンと同じように思えますが、
C++によるデザインパターン10: Strategy パターン - MY ENIGMA
Decoratorパターンでは、
クラスのAPIを同じものを使用する
(仮想クラスのインターフェースを使用する)ことによって、
ユーザにとっては、
元のクラスと新しいクラスの使用方法が変わっていないため、
使いやすいクラスを作成することができます。
また、機能追加する時にDecoratorパターンを使用することにより、
インスタンスを渡すだけなので、
元のクラスの中身を変更することなく、
機能追加できるようになります。
参考資料
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com