commandは日本語で「指示」,「命令」という意味になる.Commandパターンは,リクエストをオブジェクトとしてカプセル化するパターンである.
命令を呼び出すオブジェクトと命令実行するオブジェクトを分離できる.
Commandパターンの主な要素は以下である.
java// Command
interface Command {
void execute();
}
// Concrete Command
class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
receiver.action();
}
}
// Receiver
class Receiver {
public void action() {
System.out.println("Receiver action");
}
}
// Invoker
class Invoker {
private Command command;
public Invoker(Command command) {
this.command = command;
}
public void call() {
command.execute();
}
}
// Client
public class CommandPattern {
public static void main(String[] args) {
Receiver receiver = new Receiver();
ConcreteCommand command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker(command);
invoker.call();
}
}
Webで使う場面があるとすれば,バッチ処理命令が考えられる.メール一括送信処理とかで使えそう.ん,バッチ処理じゃなくてもただのメール送信でもCommandパターンは使えそう.てことはバッチ処理は関係ないか.
たしかLaravelにもCommandがあった.実際にCommandパターンを使用していたかどうかは覚えていないが…