成都android培训
达内成都高升桥中心

18684047202

热门课程

设计模式与Android命令模式之军令如山

  • 时间:2017-11-16
  • 发布:成都达内
  • 来源:成都达内

设计模式与Android命令模式之军令如山

什么是命令模式

所谓命令模式,就是将一个请求封装为一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作的设计模式。

命令模式的实现方式

刘备三顾茅庐请诸葛亮出山之后,曹操派夏侯惇攻打刘备。刘备让诸葛亮指挥各位将军,诸葛亮“恐关、张二人不肯听吾号令”,刘备“便以剑印付孔明,孔明遂聚集众将听令。”

诸葛亮成了命令的发布者:

public class ZhugeLiang {

Command command;

public void setCommand(Command command){

this.command = command;

}

public void publishCommand(){

command.execute();

}

}

各位将军们成为了命令的接收者和执行者

public class General {

private String name = "";

public General(String name) {

this.name = name;

}

public void execute(Command command){

Log.e("诸葛亮命令"+name,command.getAction());

}

}

在豫山埋伏的命令

public class YushanCommand extends Command {

public YushanCommand(General general) {

super(general);

}

@Override

public String getAction() {

return "引一千军往豫山埋伏……纵兵出击,就焚其粮草。";

}

}

在安林埋伏的命令

public class AnlinCommand extends Command {

public AnlinCommand(General general) {

super(general);

}

@Override

public String getAction() {

return "引一千军去安林背后山谷中埋伏,……向博望城旧屯粮草处纵火烧之。";

}

}

勾引夏侯惇等人进埋伏圈的命令

public class SeduceCommand extends Command {

public SeduceCommand(General general) {

super(general);

}

@Override

public String getAction() {

return "为前部,不要赢,只要输。";

}

}

让具体的将军们执行命令

ZhugeLiang zhugeLiang = new ZhugeLiang();

zhugeLiang.setCommand(new YushanCommand(new General("关羽")));

zhugeLiang.publishCommand();

zhugeLiang.setCommand(new AnlinCommand(new General("张飞")));

zhugeLiang.publishCommand();

zhugeLiang.setCommand(new SeduceCommand(new General("赵云")));

zhugeLiang.publishCommand();

诸葛亮初出茅庐便大获全胜,读者们也学会了命令模式。

Android源码中的命令模式

(1)命令模式不但让发布者与接收者解耦,也使得整个过程变得可控。Handler、Message、AsyncTask的执行流程都是命令模式的体现。

Android开发中如何利用命令模式

命令模式有更弱的耦合性、更灵活的控制性以及更好的扩展性。因此适用于以下场景:

(1)在不同的时刻制定、排列和执行请求时。

(2)当系统可能崩溃而需要按照修改日志重做时。

(3)当需要支持取消操作或者事务操作的时候。

需要注意的几个问题

命令模式让开发者之间的协作和工作交接变得简便,但调用逻辑却变得异常复杂。同时带来了大量衍生类,让代码过度膨胀。

成都Android培训哪家好,当然是成都达内Android培训,成都达内是一家专业的Android培训机构,专注于成都软件测试培训,专业的成都Android培训机构cd.android.tedu.cn,专业师资授课,真实项目实战、零首付、低押金、名企就业

上一篇:源码的角度看 Android 开发
下一篇:Android进阶之Android 中的IPC机制

Android APP 性能优化的一些思考

Android内存泄露分析以及工具的使用

Android程序中性能优化之ARN和OOM

Android信鸽推送全解

选择城市和中心
贵州省

广西省

海南省