设计模式-命令模式

有这样一种场景:客户创建了一个命令对象(来杯cafe),命令对象存储在调用者(服务员)中。稍后客户要求调用者(服务员)执行命令。该命令就会被执行(端来一杯cafe)或者丢弃(不搭理客户)。能够适应这样一种情景的,大致就是命令模式。

让我们实现另一个简单的命令模式的例子:

定义一个命令接口:让所有的命令对象实现相同的包含一个方法的接口。命令的内容就概化为execute()

public interface Command{
    public void execute();
}
实现一个打开电灯的命令:

//点灯控制命令(是否点亮)
public class LightCommand implements Command{
    Light light;//命令接受者(我们控制的电灯)
    public LightOnCommand(Light light){
        this.light=light;
    }
    @Override
    public void execute(){//方法中调用接收对象
        light.on();
    }
}
假设我们有这样一个遥控器可以执行上面的电灯控制命令:

public class SimpleRemoteControl{
    Command slot;//存放命令
    public void setCommand(Command command){//设置控制命令
        slot=command;
    }
    public void buttonPressed(){//按下开关
        slot.execute();
    }
}
我们对上面的命令模式做个最终测试:
public class RemoteControlTest{
    public static void main(String[] args){
        SimpleRemoteControl remote=new SimpleRemoteControl();
        Light light=new Light();//电灯,灯泡,看做名词对象
        LightOnCommand lightOn=new LightCommand(light);//实例化一个命令,并将接受者传给它

        remote.setCommand(lightOn);//把命令传个调用者
        remote.buttonPressed();
    }
}

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




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值