Android设计模式之命令模式

来源:互联网 发布:神州数码通用软件 编辑:程序博客网 时间:2024/05/29 04:29

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

我们将某些操作封装成一个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();

这里写图片描述

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

0 0
原创粉丝点击