设计模式--[6]命令模式
2017-01-04 15:57
337 查看
命令模式
定义
命令模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。举个例子
就像领导命令员工工作,,,领导让他开车,去搬砖.然后回复领导完成的结果.android登录的时候,登录,注册两个功能.
用户的操作就是命令,他不管你如何实现,
解耦隔离
所谓解耦隔离,,其实就是让两者互不相干.即登录的命令和结果,和如何登录进行分类. 登录只关心结果,而如果登录更注重如何实现.就比如,有一天我想讲登录的方式换个姿势~ 以前用volley现在用Retrofit.而丝毫不会对以前的架构产生影响.关键词
1、Command 接口命令2、Invoker 使用命令对象的入口,持有命令Command
3、ConcreteCommand 命令接口实现,持有Received
4、Received 真正的命令执行对象
代码实例:
1、Command 接口命令
public interface Command { void excute(); void back(); }
2、Invoker 使用命令对象的入口,持有命令Command
/** * 使用命令对象的入口,持有命令Command * @author ccj * */ public class General { private Command command; public General(Command command) { this.setCommand(command); } public void Attach(){ command.excute(); } public void back(){ command.back(); } }
3、ConcreteCommand 命令接口实现,持有Received
/** * 命令接口实现,持有Received army * @author ccj * */ public class AttachCommand implements Command{ private Army army; public AttachCommand(Army army) { this.army = army; } @Override public void excute() { army.attack(); } @Override public void back() { army.back(); } }
4、Received 真正的命令执行对象
/** * Received 真正的命令执行对象 * @author ccj * */ public class Army { public Army( ) { } public void attack() { System.out.println("Army 攻击城市"); } public void back() { System.out.println("Army 撤退"); } }
具体使用者
public class Test { public static void main(String[] args) { Army army=new Army(); Command command=new AttachCommand(army); General general=new General(command); general.Attach(); } }
测试结果
Army 攻击城市
总结
命令模式,就会用一个接口,轻松的解耦实现!面向接口编程,其中一个思想就是用接口抽象出行为,将”行为请求者”与”行为实现者”进行解耦.命令模式,在MVP的设计模式中,就用的这个道理.
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- 设计模式---状态模式在web前端中的应用
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C# 设计模式系列教程-建造者模式
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用