デザインパターン[Command]

どもどもっ

2回目の今回は、Commandパターンなんか語ってみちゃったりしますか〜

Commandパターンは、一つの動作毎にクラスを作成し、同じインターフェイスから呼び出せるようにしたものだ。

考え方次第では、どこにでも適用できる。ただ適用すればいいってもんでもないので、そのあたりの注意は必要だ。

では、登場するクラスたちを紹介。
・Commandインターフェイス(Command)
・Commandインターフェイスを実装したクラス(CommandImpl)

あまり説明は要らないだろう。
コードを見れば一目瞭然である。


public interface Command {
void do();
}

public class CommandImpl {
public void do() {
// 実行処理
}
}


これだけだ。
この構造は、イベント処理に向いている。
実際処理を動かす側(Clinent)は、その実装に全く依存しないので、
非常に柔軟なシステムを構築することが可能である。

実装上、Commandパターン単体で使うということはまずないと思う。
他のパターンと組み合わせることで、その真価を発揮するタイプだろう。

また、これほどにセンスを要求するデザインパターンは他にないだろう。
センス次第で非常に有用にもなり、また作りこみすぎにもなりかねない。

今回も、アジャイルソフトウェア開発の奥義を参考にしたが、
ここで紹介されているActiveObjectパターンはゲームプログラムによく登場するタスクの概念に似ている。 というかそのものだろう。
まだUndoの実装にはCommandパターンが欠かせない。
これほど簡単にUndoを実装できるのはお目にかかったことがない。