Command パターン
Commandパターンでは何かリクエストを実行する際、単純に処理を実行するのではなく、次のステップを踏む。
処理をメソッドとして内包するCommandクラスの定義
Commandオブジェクトの生成
Command.Execute()のコールによるリクエスト実行
すなわちリクエストを「手順書」の定義・生成とその「実行」に段階分けするパターンをとる。
Commandが内包する処理の記述は開発者に一任されている。全ての処理をCommand内に記述するパターン、あるいはcommandインスタンス生成時に実行対象(Receiver)を受け取りcommand.Execute()時にreceiver.action()コールのみをおこなう、すなわち実行をReceiverに委譲してCommandは繋ぎに徹するパターンもある。尚 Receiver は Commandパターンの要件ではない。
CommandはAction、TransactionあるいはTaskとも呼ばれる。
プログラムが一連のコマンドを順番に実行する場合を考える。各コマンドオブジェクトが getEstimatedDuration() を持っていれば、プログラムは全体の処理時間を簡単に予測することができる。全てのタスクの完了がどの程度近いのかを意味のある形で示すプログレスバーを表示できる。