java设计模式之命令模式
来源:互联网 发布:达内大数据培训 编辑:程序博客网 时间:2024/06/04 00:56
java设计模式参考文章:
Java设计模式实战,23种设计模式介绍以及在Java中的实现,Java设计模式, Java经典设计模式之五大创建型模式
## 定义 ##
- 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
## 代码举例 ##
模拟对电视机的操作有开机、关机命令
/** * @author bwx * @date 2017/11/29 * 执行命令的接口 */public interface Command { void execute();}/** * @author bwx * @date 2017/11/29 * 命令接收者Receiver */public class Tv { public void turnOn() { System.out.println("The televisino is on."); } public void turnOff() { System.out.println("The television is off."); }}/** * @author bwx * @date 2017/11/29 * 开机命令ConcreteCommand */public class CommandOn implements Command { private Tv myTv; public CommandOn(Tv tv) { myTv = tv; } public void execute() { myTv.turnOn(); }}/** * @author bwx * @date 2017/11/29 * 关机命令 */public class CommandOff implements Command { private Tv myTv; public CommandOff(Tv tv) { myTv = tv; } public void execute() { myTv.turnOff(); }}/** * @author bwx * @date 2017/11/29 * 可以看作是遥控器Invoker */public class Control { private Command onCommand, offCommand; public Control(Command on, Command off) { onCommand = on; offCommand = off; } public void turnOn() { onCommand.execute(); } public void turnOff() { offCommand.execute(); }}/** * @author bwx * @date 2017/11/29 * 命令模式 */public class Main { public static void main(String[] args) { // 命令接收者ReceiverTv Tv myTv = new Tv(); // 开机命令ConcreteCommond CommandOn on = new CommandOn(myTv); // 关机命令ConcreteCommond CommandOff off = new CommandOff(myTv); // 命令控制对象Invoker Control control = new Control(on, off); // 开机 control.turnOn(); // 关机 control.turnOff(); }}
## 优点 ##
- 在命令模式中,请求者(Invoker)不直接与接受者(Receiver)交互,及请求者(Invoker)不包含接受者(Receiver)的引用,因此彻底消除了彼此间的耦合。
- 命令模式满足“开-闭原则”。如果增加新的具体命令和该命令的接受者,不必修改调用者的代码,调用者就可以使用新的命令对象;反之,如果增加新的调用者,不必修改现有具体命令和接收者,新增加的调用者就可以使用已有的具体命令。
- 由于请求者的请求被封装到具体的命令中,那么就可以将具体命令保存到持久化的媒介中,在需要的时候,重新执行这个具体命令。因此,使用命令模式可以记录日志。
- 使用命令模式可以对请求者的“请求”进行排队。每个请求都各自对应一个具体命令,因此可以按一定顺序执行这些具体命令。
阅读全文
0 0
- Java设计模式-之Command命令模式
- Java设计模式之命令模式
- java设计模式之命令模式Command
- java设计模式之命令者模式
- JAVA设计模式之命令模式
- java设计模式之命令模式
- Java设计模式之命令模式
- java与设计模式之命令模式
- JAVA-设计模式之命令模式
- java设计模式之四命令模式
- java设计模式之命令模式
- java设计模式之命令模式
- Java设计模式泛型化之命令模式
- JAVA 设计模式之命令模式
- java设计模式之命令模式Command
- JAVA设计模式之命令模式
- java设计模式之命令模式
- java 设计模式之命令模式
- 查看应用SHA1值
- Git详细介绍和常用命令
- 判断单链线性表是否为循环链表
- 我所理解的ArrayList
- 十分钟带你理解Kubernetes核心概念
- java设计模式之命令模式
- SSM框架搭建(Spring+SpringMVC+MyBatis)与easyui集成并实现增删改查实现
- stacks-cli
- Vue.js 源码学习笔记
- Ubuntu下Firefox播放mp3显示HTTP "Content-Type" of "audio/mpeg" is not supported错误的解决办法
- 二、开始Tango API(Java语言版)
- java 之 HttpServlet 获取GET或者POST字段(getParameter) 获取配置getServletContext 和 获取某个文件绝对路径(getPath)
- hadoop集群启动之后dataNode节点没有启动
- Redis发布与订阅功能