概述
在命令模式中有三个关键的对象:
- 命令类:在标准的命令模式里面,命令实现类是没有真正实现命令要求的功能的,真正执行命令的功能是接收者。
- 接收者:在命令模式中接收者可以是任意的类,它是持有真正执行方法的类,它可以处理多个命令,接收者提供的方法个数,名称功能和命令中的可以不一样,只要能够通过调用接收者的方法来实现命令对应的功能就可以了。
- 命令触发器:命令出发器是持有命令的对象,但是请求究竟由谁处理,如何处理,发起请求的对象是不知道的,也就是发起请求的对象和真正实现的对象是解偶的,发起请求的对象只管发出命令,其他的就不管了。
命令模式的优点是实现了命令的发起对象和命令的具体实现对象—命令接收者的完全解耦,这样很方便扩展新的命令,只要实现新的命令对象,然后在装配的时候,把具体实现对象设置到命令中,就可以使用这个命令对象了,不用改变已有的实现。
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(); } }
|