デザインパターン[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を実装できるのはお目にかかったことがない。