命令模式(Head First版)
用命令模式实现这样一个需求:
有个按钮,将一盏电灯的开和关动作都绑定在这个按钮上。另外还有一个undo按钮,可撤消之前的一个动作。
?
?
?
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
命令模式的定义:将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。?