设计模式之命令模式(java)
2017-01-12 04:27
375 查看
命令模式,其实就是进一步封装,把方法调用封装起来,head first中举了一个很生动的例子,饭店中点餐的流畅如下:客户点了订单并交给服务端,然后女招待把订单交给大厨的师傅,大师傅最后呈现出一道可口的菜肴。
在这个过程中,客户只需要知道来饭店点好菜单就可以等吃饭了,服务员也是只需要知道把订单交给大厨,而大厨也只需要如何根据订单来做错了事情。
实现一个打开电灯的命令
主测试类:
将请求和接受都包装成对象,请求方不需要知道接收方的接口以及请求信息,从而使俩个对象松耦合,代码结构更容容易扩展。
待补充。。。
在这个过程中,客户只需要知道来饭店点好菜单就可以等吃饭了,服务员也是只需要知道把订单交给大厨,而大厨也只需要如何根据订单来做错了事情。
实现一个打开电灯的命令
public interface Command { public void execute(); }
public class LightOnCommand implements Command { Light light; public LightOnCommand(Light light) { this.light = light; } public void execute() { light.on(); } }
public class SimpleRemoteControl { Command slot; public SimpleRemoteControl() {} public void setCommand(Command command) { slot = command; } public void buttonWasPressed() { slot.execute(); } }
主测试类:
public class RemoteControlTest { public static void main(String[] args) { SimpleRemoteControl remote = new SimpleRemoteControl(); Light light = new Light(); LightOnCommand lightOn = new LightOnCommand(light); remote.setCommand(lightOn); remote.buttonWasPressed(); } }
将请求和接受都包装成对象,请求方不需要知道接收方的接口以及请求信息,从而使俩个对象松耦合,代码结构更容容易扩展。
待补充。。。
相关文章推荐
- SpringBoot学习(4) 配置log4j2
- Maven+SpringMVC+Mybatis项目搭建(二)
- [算法] 关于algs4 MSD.java 高位优先的字符串排序 的逐行代码解释
- jre和jdk区别
- 设计模式之单例模式(java)
- JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对比
- java基础
- Java Swing TextField对用户输入数据进行格式化处理
- Java JSON library哪家强?
- 简单的java反射练习
- JavaWeb(4)——SVN服务器配置
- Fedora配置JDK环境
- 构造器与finalize方法
- 可变参数
- 如何使用Java来编译运行C文件(一)
- SpringMVC4.1.5 源代码分析-01写在前面 4000
- 在intellij 下用java spring + Mysql + Hibernate 开发的第一个数据库demo
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
- Java 实现简单登陆案例
- springmvc接收中文参数乱码的问题