Command抽象命令类
ConcreteCommand具体命令类
Invoker调用者/请求者
请求的发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其接收者,因此它只与抽象命令类之间存在关联。在程序运行时,将调用命令对象execute(),间接调用接收者的相关操作。
Receiver接收者
接收者执行与请求相关操作,具体实现对请求的业务处理。
为抽象前,实际执行操作内容的对象。
Client客户类
在客户类中需要创建调用者对象、具体命令类对象,在创建具体命令对象时指定对应的接收者。发送者和接收者之间没有直接关系,都通过命令对象间接调用。
publicclass Client { publicstaticvoid main(String[] args) { Command c = new ConcreteCommand(new Receiver()); Invoce i = new Invoce(c); i.call();
} } //真正的执行者 class Receiver{ publicvoid action(){ System.out.println("receiver.action()"); } }
interface Command{ /* * 这个方法是一个返回结果为空的方法 * 实际项目中,可以根据需求设计多个不同的方法 */ void execute(); }
class ConcreteCommand implements Command{ private Receiver receiver;//命令的真正执行者
public ConcreteCommand(Receiver receiver){ super(); this.receiver = receiver; } @Override publicvoid execute() { //命令真正执行前,执行后,执行相关的处理 receiver.action(); } } //调用者/发起者 class Invoce{
private Command command;//也可以通过容器容纳很多命令对象,执行批处理
public Invoce(Command command){ super(); this.command = command; } //业务方法,用于调用命令类的方法 publicvoid call(){ command.execute(); } } |