概述

在命令模式中有三个关键的对象:

  • 命令类:在标准的命令模式里面,命令实现类是没有真正实现命令要求的功能的,真正执行命令的功能是接收者。
  • 接收者:在命令模式中接收者可以是任意的类,它是持有真正执行方法的类,它可以处理多个命令,接收者提供的方法个数,名称功能和命令中的可以不一样,只要能够通过调用接收者的方法来实现命令对应的功能就可以了。
  • 命令触发器:命令出发器是持有命令的对象,但是请求究竟由谁处理,如何处理,发起请求的对象是不知道的,也就是发起请求的对象和真正实现的对象是解偶的,发起请求的对象只管发出命令,其他的就不管了。

命令模式的优点是实现了命令的发起对象和命令的具体实现对象—命令接收者的完全解耦,这样很方便扩展新的命令,只要实现新的命令对象,然后在装配的时候,把具体实现对象设置到命令中,就可以使用这个命令对象了,不用改变已有的实现。

public interface AbsCommand {
public void excuteCommand();
}
public class ConcreComand implements AbsCommand {
private CommandReceiver mReceiver = null;
public ConcreComand(CommandReceiver receiver) {
mReceiver = receiver;
}
public void excuteCommand() {
mReceiver.action();
}
}
public class CommandReceiver {
public void action() {
System.out.println("Receiver excute command");
}
}
public class CommandInvoker {
private AbsCommand mCommand = null;
public CommandInvoker(AbsCommand command) {
mCommand = command;
}
public void runCommand(){
mCommand.excuteCommand();
}
}
public class Client {
public static void main(String args[]) {
CommandReceiver receiver = new CommandReceiver();
AbsCommand command = new ConcreComand(receiver);
CommandInvoker invoker = new CommandInvoker(command);
invoker.runCommand();
}
}
Contents
  1. 1. 概述