読者です 読者をやめる 読者になる 読者になる

MyEnigma

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

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

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

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

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

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

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


Decorator パターン

Decratorパターンは、

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

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


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

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

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


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

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

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

Decoratorパターンでは、

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

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

ユーザにとっては、

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

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


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

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

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

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

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

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

cpp/Decorator.cpp at master - AtsushiSakai/cpp

参考資料

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


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

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

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

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

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