定义
命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
解决的问题
将“动作的请求者”从动作的执行者“对象中解耦。
归根结底:在做设计,写框架代码的时候,尽量解耦,不要让框架代码与具体的内容代码绑定在一起。
类图

伪代码
命令对象接口(动作的执行者)
public interface Command{
public void execute();// 都有一个统一的执行方法
}
客户端(动作的请求者)
public class Client{
Command obj;
public void setCommand(Command command){// 给一个命令对象,多态,不关心具体是哪个对象
this.obj = command;
}
public void executeCommand(){// 执行,调用对象的方法,执行,不关心是哪个具体对象
obj.execute();
}
}
具体命令对象
public class Command1 implements Command{
public void execute(){
xxxx;
}
}
public class Command2 implements Command{
public void execute(){
yyyy;
}
}
示例
Client client = new Client();
client.setCommand(new Command1());
client.executeCommand();
client.setCommand(new Command2());
client.executeCommand();
一句话总结
给我一个对象,我来调用对象执行其方法。
临时产生的感想
设计框架,高度解耦,自由替换,使用多态
网友评论