JAVA开发的23种设计模式之 --- 命令模式
来源:互联网 发布:ubuntu apache https 编辑:程序博客网 时间:2024/06/06 17:48
命令模式
- 概述:将请求封装成一个对象,从而使我们可用不同的请求对客户进行参数化
- 解决的问题:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系.但是在某些场合.需要对行为进行记录,撤销/重做,事务等处理.这种无法抵御变化的紧耦合是不合适的.在这种情况下就需要将"行为请求者”与”行为实现者”解耦,将一组行为抽象成对象.可以实现二者之间的松耦合.
- 命令模式所包含的角色
- 命令角色(Command):定义命令的接口
- 具体命令角色(Concrete Command):实现命令接口声明的方法,通常会有命令执行者参数,并且调用执行者的方法来完成命令要执行的操作.
- 执行者角色(Receiver):负责具体实施和执行一个请求.任何类都可能会成为一个执行者,只要它能够实现命令要求实现的功能
- 请求者角色(Invoker):负责调用命令对象执行请求
- 优点
- 降低了系统的耦合度,这样请求者和调用者是没有任何依赖关系的,他们是通过一个具体的命令而连接的
- 新的命令可以很容易的添加到系统中去,多一个具体的命令加一个实现Command的子类就可以了
- 缺点
- 可能会导致某些系统有过多的具体命令类
代码实现
示例:现在有一个bug需要解决,公司Boss下令去让程序员去解决.这个过程是:公司Boss发出命令,命令传递到程序员本人,程序员解决bug.使用命令模式使得三者相互解耦,这样Boss不需要知道是怎么做的,也不需要知道是哪一个程序员做的.只需要知道bug修改好了就可以了.
执行者角色
package Command;/** * Created by looper on 2017/8/21. */public class Receiver { private String name; public Receiver(String name){ this.name = name; } //执行者的执行方法 public void operator(){ System.out.println(name + " 已经接收到命令,开始执行"); }}命令角色接口
package Command;/** * Created by looper on 2017/8/21. */public interface Command { public void execute();}具体命令角色角色类
package Command;/** * Created by looper on 2017/8/21. */public class ConcreteCommand implements Command { private Receiver receiver; public ConcreteCommand(Receiver receiver){ this.receiver = receiver; } @Override public void execute() { //调用执行者的执行方法 receiver.operator(); }}请求者角色类
package Command;/** * Created by looper on 2017/8/21. */public class Invoker { private Command command; public Invoker(Command command) { this.command = command; } //boss发出命令的方法 public void action() { command.execute(); }}测试类
package Command;/** * Created by looper on 2017/8/21. */public class CommandTest { public static void main(String[] args) { //创建一个程序员 name = "坑露" Receiver programmer = new Receiver("坑露"); //为这个命令指定一个执行者 Command command = new ConcreteCommand(programmer); //为这个命令指定一个调用者 Invoker boss = new Invoker(command); //执行 boss.action(); }}
输出:
坑露 已经接收到命令,开始执行
我将23种设计模式的全部代码上传到CSDN,有用得到的同学 可以去下载.
下载地址 : 点我
阅读全文
0 0
- JAVA开发的23种设计模式之 --- 命令模式
- JAVA开发的23种设计模式之 --- 外观模式
- JAVA开发的23种设计模式之 --- 策略模式
- JAVA开发的23种设计模式之 --- 模板模式
- JAVA开发的23种设计模式之 --- 观察者模式
- JAVA开发的23种设计模式之 --- 备忘录模式
- JAVA开发的23种设计模式之 --- 状态模式
- JAVA开发的23种设计模式之 --- 访问者模式
- Java开发中的23种设计模式之十八:命令模式(Command)
- 23种java设计模式之命令模式
- JAVA开发的23种设计模式之 --- 工厂模式 && 抽象工厂模式
- JAVA开发的23种设计模式之 — 装饰器模式 && 代理器模式
- 23种设计模式之命令模式
- 23种设计模式之命令模式
- 23种设计模式之命令模式
- JAVA的23种设计模式---命令模式
- java开发的23种设计模式
- Java开发的23种设计模式
- 数学+二分 hdu6154 CCPC2017网络赛 1005
- JS中的正则
- Java 程序员必须收藏的资源大全
- 网络营销实战课-文案实操2
- Java HashMap工作原理及实现
- JAVA开发的23种设计模式之 --- 命令模式
- Py-CIDecrypt
- Ranger基础
- 汇编语言入门五:流程控制(一)
- 创建一个简单的代码发布服务
- 网络营销实战课-文案实操案例
- 0821Link
- mysql创建临时表
- kafka connect 简单测试