下令模式(Head First版)

命令模式(Head First版)用命令模式实现这样一个需求:有个按钮,将一盏电灯的开和关动作都绑定在这个按钮上。

命令模式(Head First版)

用命令模式实现这样一个需求:

有个按钮,将一盏电灯的开和关动作都绑定在这个按钮上。另外还有一个undo按钮,可撤消之前的一个动作。

?

下令模式(Head First版)

?

?

package com.headfirst.chapter6;public class RemoteControlTest {public static void main(String[] args) {Light light = new Light();LightOnCommand lightOnCommand = new LightOnCommand(light);LightOffCommand lightOffCommand = new LightOffCommand(light);SimpleRemoteControl simpleRemoteControl = new SimpleRemoteControl();simpleRemoteControl.setCommand(lightOnCommand);simpleRemoteControl.buttonWasPressed();simpleRemoteControl.setCommand(lightOffCommand);simpleRemoteControl.buttonWasPressed();simpleRemoteControl.undoButtonWasPressed();//做一次undo,状态又回到之前}}

?

?最后打印出:

?

the light is on

the light if off

the light is on

命令模式的定义:将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
上面的“队列或日志来参数化”的意思是有很多命令,以队列的方式先后执行。日志是指将每个操作动作“命令化”,记录在日志中。

?