一头扎进设计模式-命令模式
来源:互联网 发布:java全栈开发工程师 编辑:程序博客网 时间:2024/03/29 18:33
定义:命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
用自己的话说:把真正操作的实体封装到命令里面,通过命令对实体进行真正的操作。
代码:
定义一个真正操作的实体类:
public class GarageDoor { public void up(){ System.out.println("升门"); } public void down(){ System.out.println("降门"); } public void stop(){ System.out.println("门停"); } public void lightOn(){ System.out.println("开灯"); } public void lightOff(){ System.out.println("关灯"); }}
定义一个命令接口:
public interface Command { public void execute();}
定义一个命令的实现:
public class GarageDoorOpenCommand implements Command { private GarageDoor garageDoor; /** * */ public GarageDoorOpenCommand(GarageDoor garageDoor) { // this.garageDoor=garageDoor; } /* (非 Javadoc) * @see com.jjt.command.Command#execute() */ @Override public void execute() { // TODO 自动生成的方法存根 this.garageDoor.lightOn(); this.garageDoor.up(); this.garageDoor.stop(); this.garageDoor.down(); this.garageDoor.lightOff(); }}
定义一个命令执行者,在这里,我模拟定义了一个遥控器:
public class SimpleRemoteControl { private Command slot; /** * */ public SimpleRemoteControl() { // TODO 自动生成的构造函数存根 } public void setCommand(Command command){ slot=command; } public void buttoWasPressed(){ slot.execute(); }}
测试:
public static void main(String[] args){ SimpleRemoteControl remote = new SimpleRemoteControl();//实际执行的调用者 GarageDoor garageDoor = new GarageDoor();//实际的执行者 GarageDoorOpenCommand garaDoorOpenCommand = new GarageDoorOpenCommand(garageDoor);//创建一个命令 remote.setCommand(garaDoorOpenCommand);//把命令交给遥控器管理 remote.buttoWasPressed();//使用遥控器 }
结果:
开灯升门门停降门关灯
0 0
- 一头扎进设计模式-命令模式
- 一头扎进设计模式-适配器模式
- 一头扎进设计模式-组合模式
- 一头扎进设计模式-外观模式
- 一头扎进设计模式-代理模式
- 一头扎进设计模式-模版模式
- 一头扎进设计模式-迭代器模式
- 一头扎进设计模式-观察者模式
- 一头扎进设计模式-状态模式
- 一头扎进设计模式-策略模式
- 一头扎进设计模式-抽象工厂模式
- 一头扎进设计模式-单例模式
- 一头扎进设计模式-装饰者模式
- 设计模式---命令模式
- 设计模式-命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 软件架构入门
- 如何将java web项目上线/部署到公网
- 直白叙述一下multi interface优于easy interface的地方
- 利用Trie树,来查找单词出现的次数
- 在活动中创建Menu,Menu无法显示
- 一头扎进设计模式-命令模式
- 内核模式下的注册表操作
- 你是我红尘里最美的那株莲
- Ojbective-C基础教程
- JS如何输出空格
- XManager5基于gdm连接centos图形界面
- TLCL学习笔记02——使用命令、重定向、从shell眼中看世界
- Leetcode_16
- mapreduce框架详解