您的位置:首页 > 移动开发 > Android开发

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

2016-02-21 14:13 525 查看

前言

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

定义

定义:将一系列的方法调用封装,用户只需调用一个方法执行,那么所有这些被封装的方法就会挨个执行调用.

优点:更弱的耦合性,更灵活的控制性,以及更好的扩展性.

缺点:类的膨胀,大量衍生类的创建

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截图:



点击下载demo.http://download.csdn.net/detail/qq_28690547/9438260
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息