美文网首页
命令模式——《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