设计模式之命令模式

来源:互联网 发布:node.gs卸载 编辑:程序博客网 时间:2024/06/07 14:43

命令模式:封装调用

这些绝密文件的  投递箱 已经促成了间谍工业的革命。我们只要把需求丢进去,就会有人消失,政府一夕之间改朝换代,而我干洗衣物也好了。我不必管何时,何处,或者如何完成;反正就是完成了。

命令模式将会把封装带到一个全新的境界:把方法调用封装起来。没错,通过封装方法调用,我们可以把运算块包装成形。所以调用此运算块的对象不需要关心事情是如何进行的,只要知道如何使用包装形势的方法来完成它就可以了。

命令模式可将动作的请求者从动作的执行者对象中解耦。


实现命令接口:

 首先让所有的命令对象实现相同的包含一个方法的接口。在餐厅的例子中,我们将此方法成为orderup()。然而,现在改为一般惯用的名称execute().

public interface Command{

public void execute();

}

实现一个命令

现在设想实现一个打开电灯的命令,根据厂商所提供的类,Light类有两个方法:on()和off()。下面将是如何实现它的一个命令。

public class LightOnCommand implements Command{

Light light;

public LightOnCommand (Light light){

this.light =light;

}

public void execute(){

ligth.on();

}

}

假如我们有一个遥控器,它只有按钮和对应的插槽


public class SimpleRemoteControl{

Command slot;

public SimpleRemoteControl(){}

pubic void setCommand(Command command){

slot = command;

}

public void buttonWasPressed(){

slot.execute();

}

}


遥控器使用的简单测试

下面只有一段小小的代码,用来测试上面的简单遥控器。让我们来看看这个代码,并指出它和命令模式对应的关系。

public class RemoteControlTest{

public static void main(String[] args){

SimpleRemoteControl remote = new SimpleRemoteControl();

Light light = new Light();

LightOnCommand lightOn = new LightOnCommand(light);

remote.setCommand(light);

remote.buttonWasPressed();

}

}


0 0
原创粉丝点击