Design Pattern | Command Pattern(コマンドパターン)

Commandパターンとは?

  • Commandという英単語は命令という意味である。
  • Commandパターンは、命令を表すクラスのインスタンスとして表現する方法である。
  • 命令の履歴を管理したいときは、そのインスタンスの集合を管理すればよい。命令の集まりを保存すれば、同じ命令を再実行したり、複数の命令をまとめて新しい命令として再利用したりできる。
  • GoFのデザインパターンでは、振る舞いに関するデザインパターンに分類される。

Commandパターンのサンプルプログラム

簡単なお絵描きプログラムである。

Class Diagram
Command Pattern Class Diagram

例では、execute()を持つCommandインターフェース、命令を保存する履歴、描画対象、描画命令、描画操作を作成して再実行するUIクラスを定義する。各描画操作はオブジェクトとして保持されるため、実行、保存、再実行、グループ化が可能になる。

メリット

命令をデータとして扱える。これにより、履歴、Undo/Redo、マクロ命令、キュー、ログ、遅延実行などを実装しやすくなり、要求元と実際の処理対象を分離できる。