《Android源码设计模式解析和实战》命令模式

2017-03-10  本文已影响0人  wslerz

命令模式: 接收者(执行者)内实现具体的事件; 命令类持有接收者的引用,并提供方法调用接收者的方法;请求者持有一个或多个命令,并提供调用命令的方法;

接收者(执行者)
<pre>
public class Receiver {
private static final String TAG = "Receiver";

public void action() {
    Log.i(TAG, "action: ");
}

}
</pre>
命令类
<pre>
public interface Command {
void execute();
}
public class CommandImpl implements Command {
private Receiver receiver;

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

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

}
</pre>
请求者
<pre>
public class Invoker {
private Command command;

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

public void action() {
    command.execute();
}

}
</pre>
使用
<pre>

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Receiver receiver = new Receiver();
    Command command = new CommandImpl(receiver);
    Invoker invoker = new Invoker(command);
    invoker.action();
}

}
</pre>
log
<pre>
03-10 19:14:48.843 15277-15277/com.lerz.commanddemo I/Receiver: action:
</pre>

上一篇下一篇

猜你喜欢

热点阅读