【设计模式与Android】命令模式——军令如山-创新互联

什么是命令模式

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的香河网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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

命令模式的实现方式

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

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

public classZhugeLiang {
    Command command;

    public voidsetCommand(Command command){
        this.command= command;
    }

    public voidpublishCommand(){
        command.execute();
    }

}

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

public classGeneral {

    privateString name= "";

    publicGeneral(String name) {
        this.name= name;
    }

    public voidexecute(Command command){
        Log.e("诸葛亮命令"+name,command.getAction());
    }

}

在豫山埋伏的命令

public classYushanCommand extendsCommand {
    publicYushanCommand(General general) {
        super(general);
    }

    @Override
    publicString getAction() {
        return "引一千军往豫山埋伏……纵兵出击,就焚其粮草。";
    }
}

在安林埋伏的命令

public classAnlinCommand extendsCommand {
    publicAnlinCommand(General general) {
        super(general);
    }

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

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

public classSeduceCommand extendsCommand {
    publicSeduceCommand(General general) {
        super(general);
    }

    @Override
    publicString getAction() {
        return "为前部,不要赢,只要输。";
    }
}

让具体的将军们执行命令

ZhugeLiang zhugeLiang = newZhugeLiang();
zhugeLiang.setCommand(newYushanCommand(newGeneral("关羽")));
zhugeLiang.publishCommand();
zhugeLiang.setCommand(newAnlinCommand(newGeneral("张飞")));
zhugeLiang.publishCommand();
zhugeLiang.setCommand(newSeduceCommand(newGeneral("赵云")));
zhugeLiang.publishCommand();

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

Android源码中的命令模式

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

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

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

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

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

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

需要注意的几个问题

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

本文题目:【设计模式与Android】命令模式——军令如山-创新互联
网址分享:https://www.cdcxhl.com/article14/cshcge.html

成都网站建设公司_创新互联,为您提供网站设计网站改版网站制作用户体验搜索引擎优化电子商务

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管