《Android源码设计模式》读书笔记 (11) 第11章 命令模式

前言

  • 命令模式也是一种行为型的设计模式

定义

  • 定义:将一系列的方法调用封装,用户只需调用一个方法执行,那么所有这些被封装的方法就会挨个执行调用.
  • 优点:更弱的耦合性,更灵活的控制性,以及更好的扩展性.
  • 缺点:类的膨胀,大量衍生类的创建

UML类图

  • commond:命令角色,定义所有具体命令类的抽象接口
/** * 命令接口 * @author max * */
public interface Command {
    //执行具体命令操作
    void excute();
}
  • ConcreteCommand:具体命令角色,在excute盗用receiver接收者的相关方法
/** * 具体命令类 * @author max * */
public class ConcreteCommand implements Command {

    private Recevier recevier;//接收者对象的引用

    public ConcreteCommand(Recevier recevier) {
        super();
        this.recevier = recevier;
    }


    @Override
    public void excute() {
        //调用接收者的执行具体的逻辑
        recevier.action();
    }

}
  • invoker:请求者角色.调用命令对象执行具体的请求.相关方法我们称为行动方法.
/** * 请求者 * @author max * */
public class Invoker {
    private Command command;//持有一个相对应的命令对象的引用

    public Invoker(Command command) {
        super();
        this.command = command;
    }

    public void action(){
        //调用命令者的相关方法
        command.excute();
    }
}
  • receiver:接收者角色,执行命令角色具体的请求
/** * 接收者 * @author max * */
public class Recevier {
    /** * 真正执行具体命令逻辑的方法 */
    public void action(){
        //执行具体的逻辑
    }
}
  • client:客户端
private void simpleMethod() {
        //接收者
        Recevier recevier = new Recevier();
        //根据接收者构造命令对象
        Command command = new ConcreteCommand(recevier);

        //根据具体的对象构造请求者
        Invoker invoker = new Invoker(command);

        //执行请求方法
        invoker.action();

    }

源码下载

  • 按照书上提供的俄罗斯方块的demo,可以更好的理解该设计模式.以下是项目demo截图:
    《Android源码设计模式》读书笔记 (11) 第11章 命令模式_第1张图片
  • 点击下载demo.http://download.csdn.net/detail/qq_28690547/9438260

你可能感兴趣的:(设计模式,android,读书笔记,命令模式)