《Head First设计模式》笔记整理...欢迎交流...

定义

将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象,命令模式也支持可撤销的操作。


![图片上传中...]

clipboard.png

类图

clipboard.png

代码演示

public interface Command {
    public void execute();
} 

public class LightOnCommand implement Command {
    Light light;
    
    public LightOnCommand(Light light) {
        this.light = light;
    }
    
    public void execute() {
        light.on(); //execute方法调用接收对象的on方法
    }
}

//invoker请求者

public class SimpleRemoteControl {
    Command slot;
    
    public SimpleRemoteControl();
    
    public void setCommand(Command slot) {
        this.slot = slot;
    }
    
    public void buttonWasPressed() {
        slot.execute();
    }
}

测试

SimpleRemoteControl remote = new SimpleRemoteControl();
Light xx = new Light();
LightOnCommand lightOn = new LightOnCommand(buttonWasPressed);


remote.setCommand(lightOn);
remote.buttonWasPressed();

大米aBigRice
236 声望24 粉丝

欢迎我呀~