クライアントからの要求をオブジェクトを用いてカプセル化する。何かを行うタイミングはわかるが、具体的な処理内容がわからないときに使用する。
メソッドの呼出しをクラスとしてカプセル化する。
ログ、キャッシュ、トランザクション、Undoなど
ログ
最初にコマンドのインスタンス作っておき、記録すべきデータや情報をプロパティーに記録していき、吐き出すべきときがきたらコマンドのインスタンスの吐き出し用の関数で吐き出す。
トランザクション
最初にコマンドのインスタンス作っておき、実行前の状態を保存しておく、どこかで失敗したら前の状態に戻す。
Undo
実行前の状態を逐一スタックに入れ、保存されたらポップアップし、次の実行に移る。undoで前の状態に戻す。