MyEnigma

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

C++によるデザインパターン22: Commandパターン

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

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

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

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

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

Commandパターン

Commandパターンは、

あるクラスへの要求をクラスのオブジェクトにしてしまう

デザインパターンです。


あるクラスへの要求は、

普通そのクラスのメンバ関数を呼ぶことによって実現しますが、

非常に多くの設定情報を必要とする、複雑な要求をしたい場合には、

引数が多くなってしまい、関数が複雑化し、

ソフトの可読性が落ちてしまいます。


また、要求のUndoやRedo、

要求の履歴の利用などをしたい時に、

このソフト構成のままでは難しいという問題があります。


これらの問題を解決するために、

あるクラスへの要求をクラスとしてまとめ、

そのCommandクラスのオブジェクトを渡すようにします。

これにより、複雑な要求内容をクラスの中にまとめることができます。


また、この要求のクラスオブジェクトをリストで管理することにより、

UndoやRedo、履歴管理などが簡単に実現できるようになります。


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

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

cpp/Command.cpp at master - AtsushiSakai/cpp