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

Android设计模式之命令模式

2016-07-17 21:22 435 查看
通过将一系列的操作封装成一个命令对象,方便执行,同时也能够很好的让我们进行一些操作回滚,用来记录是否执行过该操作等问题。

我们将某些操作封装成一个Command命令,每个命令对应一个操作,如下图所示:



Command

public interface Command {
void execute();
}


ConcreteCommand

public class ConcreteCommand implements Command {

private Receiver receiver;

public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}

@Override
public void execute() {
this.receiver.action();
}

}


Receiver

public class Receiver {

public void action() {
System.out.println("执行动作");
}

}


这样我们就可以通过命令的方式来对我们的操作进行管理了。

上面已经把我们的操作抽象为命令的方式,每个命令对应一个行为操作,下面就是对命令的触发了。我们通过一个单独的类来对命令进行管理和触发。



Invoker

public class Invoker {
private Command command;

// 这里凡是继承 Command 接口的类都可以以参数的形式传入
public void setCommand(Command command) {
this.command = command;
}

public void action() {
this.command.execute(); // 而所有继承自 Command 接口的类都必须实现 execute() 这个方法
}
}


这样就形成了整个命令模式。

Client

public class Client {
public static void main(String args[]) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.action();
}
}


Android中的命令模式

Android中的Runnable就是一种命令模式。例如:

new Thread(new Runnable() {

@Override
public void run() {

}
}).start();




跟上面相比,命令的行为这里直接写在命令中,并没有单独为命令写一个行为对象。

欢迎关注微信公众号:DroidMind

精品内容独家发布平台





呈现与博客不一样的技术干货
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: