您的位置:首页 > 其它

命令模式

2016-04-13 09:16 204 查看
Demo场景:通过遥控器控制Light开的动作。

核心是把方法封装成对象

(1)遥控器类,能够插入执行方法具体实现,并且按下按钮发出执行具体方法的动作:SimpleRemoteControl类,Command为插入指定方法的接口。

package designpattern.command.remotecontrol;

public class SimpleRemoteControl {

Command slot;

public SimpleRemoteControl(){}

public void setCommand(Command command){
slot = command;
}

public void buttonWasPressed(){
slot.execute();
}
}


(2)一般插入遥控板的执行方法都应该实现统一的接口,现在定义这个接口:Command, 包含执行方法的命令

package designpattern.command.remotecontrol;

public interface Command {

public void execute();
}


(3)前面定义的只是执行方法的接口,需要一个具体实现的方法,但是这个方法是有具体的对象来执行的,因此先定义一个执行方法的具体类:Light

package designpattern.command.remotecontrol;

public class Light {

public void on(){
System.out.println("Light is on");
}
}


(4)好了,有了执行具体方法的类了,那么我们接着把这个类的方法封装成一个遥控板执行的方法对象,这样就成将这个执行方法具体实现插到遥控板上:LightOnCommand

package designpattern.command.remotecontrol;

public class LightOnCommand implements Command {

Light light;

public LightOnCommand(Light light){
this.light = light;
}
@Override
public void execute() {
light.on();
}

}


最后,演示一下用遥控器打开Light:

package designpattern.command.remotecontrol;

public class RemoteControlTest {

public static void main(String[] args) {
SimpleRemoteControl remote = new SimpleRemoteControl();
Light light = new Light();
LightOnCommand lightOn = new LightOnCommand(light);

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  命令模式