大话设计模式之命令模式

来源:互联网 发布:今年最流行的网络语 编辑:程序博客网 时间:2024/05/22 00:10

命令模式,讲一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。


package Command;public class MainClass {public static void main(String[] args) {// TODO Auto-generated method stubReceiver receiver = new Receiver();Command command = new ConcreteCommand(receiver);Invoker invoker = new Invoker();invoker.SetCommand(command);invoker.ExecuteCommand();}}abstract class Command {protected Receiver receiver;public Command(Receiver receiver) {this.receiver = receiver;}abstract public void execute();}class ConcreteCommand extends Command {public ConcreteCommand(Receiver receiver) {super(receiver);}@Overridepublic void execute() {// TODO Auto-generated method stubreceiver.action();}}class Invoker {private Command command;public void SetCommand(Command command) {this.command = command;}public void ExecuteCommand() {command.execute();}}class Receiver {public void action() {System.out.println("in action");}}
定义一个命令的抽象类(消息),实现若干个具体的命令,每个命令与对应着一个命令的接收者Receiver,Invoker发出命令。

命令模式的优点:能较容易地设计一个命令队列;较容易将命令计入日志;允许接受请求的一方决定是否要否决请求;容易实现对请求的撤销和重做;新增具体命令类很容易;把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。

原创粉丝点击