命令模式
描述
命令模式是一种体现高内聚的行为模式。
将整个请求封装成一个命令对象 ,由这个命令对象完成所需业务调用。
命令对象封装了该命令需要的所有逻辑,不需要调用方关注内部细节。
基本使用
- 定义抽象命令(所有命令都基于这个抽象命令定义)
java
public abstract class AbstractCommand {
abstract void execute();
}
- 定义命令对象内要实际调用的业务对象
java
public interface IReceiver {
void action();
}
public class ReceiverA implements IReceiver {
@Override
public void action() {
System.out.println("ReceiverA action ....");
}
}
public class ReceiverB implements IReceiver {
@Override
public void action() {
System.out.println("ReceiverB action ....");
}
}
- 定义两个具体的命令
java
public class CommandA extends AbstractCommand{
private IReceiver receiver;
public CommandA(IReceiver receiver) {
this.receiver = receiver;
}
@Override
void execute() {
System.out.println("commandA....");
receiver.action();
}
}
public class CommandAB extends AbstractCommand{
private IReceiver[] receivers;
public CommandAB(IReceiver... receivers) {
this.receivers = receivers;
}
@Override
void execute() {
System.out.println("commandA....");
for (IReceiver receiver : receivers) {
receiver.action();
}
}
}
使用
java
public class Sample {
public static void main(String[] args) {
IReceiver receiverA = new ReceiverA();
IReceiver receiverB = new ReceiverB();
AbstractCommand command = new CommandA(receiverA);
command.execute();
AbstractCommand commandAb = new CommandAB(receiverA, receiverB);
commandAb.execute();
}
}