java设计模式之命令模式
来源:互联网 发布:linux dd 备份u盘 编辑:程序博客网 时间:2024/06/16 11:15
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
命令模式类图:
下面我们来用命令模式来实现控制灯的开关。
类图:
RemoteLoader来下发开/关灯的命令,RemoteControl来设置要调用的接口是LightOnCommand/LightOffCommand,最后由Light对象来实现具体的命令。
Light类代码实现:
public class Light { public void on(){ System.out.println("turn light on"); } public void off(){ System.out.println("turn light off"); }}
Command接口代码实现:
public interface Command { public void execute(); public void undo();}
LightOnCommand类代码实现:
public class LightOnCommand implements Command{ Light light; public LightOnCommand(Light light){ this.light = light; } @Override public void execute() { // TODO Auto-generated method stub light.on(); } @Override public void undo() { // TODO Auto-generated method stub light.off(); }}
LightOffCommand类代码实现:
public class LightOffCommand implements Command{ Light light; public LightOffCommand(Light light){ this.light = light; } @Override public void execute() { // TODO Auto-generated method stub light.off(); } @Override public void undo() { // TODO Auto-generated method stub light.on(); }}
RemoteControl类代码实现:
public class RemoteControl { Command command; public void setCommand(Command command){ this.command = command; } public void buttonWasPushed(){ command.execute(); } public void undoButtonWasPushed(){ command.undo(); }}
RemoteLoader类代码实现:
public class RemoteLoader { public static void main(String[] args){ Light light = new Light(); Command lightOnCommand = new LightOnCommand(light); Command lightOffCommand = new LightOffCommand(light); RemoteControl remoteControl = new RemoteControl(); remoteControl.setCommand(lightOnCommand); remoteControl.buttonWasPushed(); remoteControl.undoButtonWasPushed(); remoteControl.setCommand(lightOffCommand); remoteControl.buttonWasPushed(); remoteControl.undoButtonWasPushed(); }}
运行结果:
turn light onturn light offturn light offturn light on
0 0
- Java设计模式-之Command命令模式
- Java设计模式之命令模式
- java设计模式之命令模式Command
- java设计模式之命令者模式
- JAVA设计模式之命令模式
- java设计模式之命令模式
- Java设计模式之命令模式
- java与设计模式之命令模式
- JAVA-设计模式之命令模式
- java设计模式之四命令模式
- java设计模式之命令模式
- java设计模式之命令模式
- Java设计模式泛型化之命令模式
- JAVA 设计模式之命令模式
- java设计模式之命令模式Command
- JAVA设计模式之命令模式
- java设计模式之命令模式
- java 设计模式之命令模式
- dplyr包介绍
- stringr包介绍
- [Educational Codeforces Round 17 F (762F)] Tree nesting
- poj 2965 枚举+DFS
- windows使用sublime text3编译lua
- java设计模式之命令模式
- HDU 1513 Palindrome (动态规划 & LCS)
- Android Studio导入项目问题
- codevs 高低位交换 5641
- List comprehension
- 3D游戏引擎系列九
- 1028
- 斐波拉契数列问题
- 欢迎使用CSDN-markdown编辑器