命令模式

Posted ssdut_yrp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令模式相关的知识,希望对你有一定的参考价值。

命令模式,封装调用,把方法调用封装起来。
遥控器

命令模式可将“动作的请求者”从“动作的执行者”对象中解耦。请求者可以是遥控器,而执行者对象就是厂商类其中之一的实例。

利用命令对象,把请求(例如打开电灯)封装成特定对象(客厅电灯对象)。所以,如果对每个按钮都存储一个命令对象,那么当按钮被按下的时候,就可以请命令对象做相关的工作。只有命令对象能和正确的对象沟通,把事情做好。电灯和遥控器对象解耦了。

public interface Command{//命令接口
    public void execute();
}
public class LightOnCommand implements Command{//实现命令
    Light light;
    public LightOnCommand(Light light){
        this.light = light;
    }
    public void execute(){
        light.on();
    }
}
public class SimpleRemoteControl{//使用命令对象
    Command slot;
    public SimpleRemoteControl(){
    }
    public void setCommand(Command slot){
        this.slot = slot;
    }
    public void buttonWasPressed(){
        slot.execute();
    }
}
SimpleRemoteControl simpleRemoteControl = new SimpleRemoteControl();//遥控器就是调用者,会传入一个命令对象,可以用来发出请求
Light light = new Light();//请求的接受者
LightOnCommand lightOn = new LightOnCommand(light);//命令
simpleRemoteControl.setCommand(lightOn);//命令传给调用者
simpleRemoteControl.buttonWasPressed();

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


以上是关于命令模式的主要内容,如果未能解决你的问题,请参考以下文章

命令模式

设计模式:命令模式——命令模式扩展之宏命令

设计模式学习_命令模式

设计模式-命令模式

设计模式之命令模式

命令模式(Command Pattern)