MyEnigma

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

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

Commandパターン

Commandパターンは、

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

デザインパターンです。


あるクラスへの要求は、

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

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

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

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


また、要求のUndoやRedo、

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

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


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

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

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

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


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

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


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

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

cpp/Command.cpp at master - AtsushiSakai/cpp

MyEnigma Supporters

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

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

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

myenigma.hatenablog.com