命令模式
介紹:
模式模式(Command Pattern)磷斧,是行為型設(shè)計(jì)模式之一贝搁。命令模式相對(duì)于其他的設(shè)計(jì)模式來(lái)說(shuō),并沒(méi)沒(méi)有那么多的條條框框幅垮,其實(shí)它不是一個(gè)很‘規(guī)矩’的模式,不過(guò)尾组,就是基于這一點(diǎn)忙芒,命令模式相對(duì)于其他的設(shè)計(jì)模式更為靈活多變。
使用場(chǎng)景
- 在不同的時(shí)刻指定讳侨、排列和執(zhí)行請(qǐng)求
- 需要支持取消操作
- 支持修改日志功能
- 需要支持事物操作
代碼塊
CommandMode
package com.design.pattern.command;
public class CommandMode {
public static void main(String[] args) {
CommandMode commandMode = new CommandMode();
// 構(gòu)造一個(gè)接受者對(duì)象
Receiver receiver = commandMode.new Receiver();
// 根據(jù)接收者對(duì)象構(gòu)造一個(gè)命令對(duì)象
Command command = commandMode.new ConcreateCommand(receiver);
// 根據(jù)具體的對(duì)象構(gòu)造請(qǐng)求者對(duì)象
Invoker invoker = commandMode.new Invoker(command);
// 執(zhí)行請(qǐng)求方法
invoker.action();
}
/**
* 接收者
* @author EdwardAdmin
*
*/
private class Receiver {
public void action() {
System.out.println("執(zhí)行具體操作");
}
}
/**
* 命令
* @author EdwardAdmin
*
*/
private interface Command {
void execute();
}
/**
* 具體命令
* @author EdwardAdmin
*
*/
public class ConcreateCommand implements Command {
private Receiver mReceiver;
public ConcreateCommand(Receiver receiver) {
this.mReceiver = receiver;
}
@Override
public void execute() {
mReceiver.action();
}
}
/**
* 調(diào)用者
* @author EdwardAdmin
*
*/
public class Invoker {
private Command mCommand;
public Invoker(Command command) {
this.mCommand = command;
}
public void action() {
mCommand.execute();
}
}
}