美文网首页
命令模式——《Android源码设计模式解析与实践》读书笔记11

命令模式——《Android源码设计模式解析与实践》读书笔记11

作者: 某翼 | 来源:发表于2017-11-01 22:12 被阅读0次

    定义

    将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是过程设计中的回调机制的一个面向对象的替代品。此模式实际上是将行为调用者与实现者解耦。

    使用场景

    (1)需要抽象出待执行的动作,然后以参数的形式提供出来时

    (2)在不同的时刻指定、排列和执行请求。一个命令对象可以有与初始请求无关的生存期

    (3)需要支持取消操作时

    (4)支持修改日志功能

    (5)需要支持事务操作时

    UML类图

    实现方式

    命令接收类

    public class Receiver{

        public void action(){ }

    }

    命令接口

    public interface Command{

        void excute();

    }

    具体命令类

    public class ConcreteCommand implements Command{

        private Receiver receiver;

        public ConcreteCommand(Receiver receiver){

            this.receiver= receiver;

        }

        @Override

        public void excute(){

            receiver.excute();

        }

    }

    命令执行类

    public class Invoker{

        private Command command;

        public Invoker(Command command){

            this.command= command;

        }

        public void invoke(){

            command.excute();

        }

    }

    应用类

    public class Client(){

        public static void main(String [] args){

            Receiver receiver = new Receiver();

            Command command = new ConcreteCommand(receiver);

            Invoker invoker = new Invoker(command);

            invoker.invoke();

        }

    }

    解释器模式的优缺点

    优点

    >更弱的耦合性

    >更灵活的控制性

    >更好的扩展性

    缺点

    >会生成大量的衍生类

    Android中的解释器模型举例

    Android系统源码中基本没有经典的命令模式实现,大多有一定的变种。比较典型的是Android的事件机制中底层逻辑对事件的转发处理以及PackageManageService对包的相关消息处理。

    相关文章

      网友评论

          本文标题:命令模式——《Android源码设计模式解析与实践》读书笔记11

          本文链接:https://www.haomeiwen.com/subject/cvrnpxtx.html