【コマンドパターン】
Commandパターン とは?
最終更新:
💡 「やること」を渡せる作業指示書にする
操作の内容をオブジェクトとして表すデザインパターン。操作を依頼する側と実際の処理を分け、履歴や遅延実行、Undo・Redoを設計する土台にする。
📌 このページのポイント
- 操作の内容と対象をコマンドとして表す
- 操作を依頼する側と、実際の処理を担当する側を分ける
- 履歴やキューを組み合わせて、記録や遅延実行に使える
- Undoには、戻すためのデータと処理を別途用意する
コマンドラインのコマンドのこと?
ここでいうCommandは、操作をオブジェクトとして表す設計の名前だよ。ファイル保存やテキスト削除などの処理を、その対象や必要なデータと一緒に渡せるようにする。端末に入力するコマンドを指す用語とは使い方が違うね。
普通にメソッドを呼べばいいんじゃないの?
すぐに固定の処理を呼ぶだけなら、それでよい場合もあるよ。操作をオブジェクトにすると、呼び出す側が処理の詳細を知らずに、渡す操作を差し替えたり後で実行したりしやすくなる。履歴も設計できるけれど、自動で記録されるわけではないんだ。
Undoはどうやって実現するの?
実行と取り消しの処理を用意し、実行済みの履歴を管理するよ。たとえば文字を削除するなら、削除した文字と位置を保存し、Undoで戻す。undoというメソッドを作るだけでは元に戻らないし、すべての操作が取り消せるとは限らないんだ。
キューに積むってどういうこと?
実際の使いどころを教えて!
まとめ:ざっくりこれだけ覚えればOK!
「Commandパターン」って出てきたら「操作をオブジェクトとして渡せるようにする設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Command Pattern」 = 命令のパターン
💬 Commandは命令という意味。GoFのデザインパターンとして知られ、操作をオブジェクトで表して、実行するタイミングや履歴の管理を分ける考え方だよ