命令模式的代码实现及优点

来源:互联网 发布:淘宝外围活动怎么样 编辑:程序博客网 时间:2024/05/17 04:12
/* *命令模式(Command),将一个请求封装为一个对象, *从而使你可用不同的请求对客户进行参数化, *对请求队列或记录请求日志, *以及支持可以撤销的操作。 */package Command;//Command类  命令类  用来声明执行操作的接口abstract class Command{protected Receiver receiver;public Command(Receiver receiver){this.receiver=receiver;}abstract public void execute_1();abstract public void execute_2();}//将一个接受者对象绑定于一个动作,调用接受者相应的操作,实现execut。class ConcreteCommand extends Command{public ConcreteCommand(Receiver receiver) {super(receiver);// TODO Auto-generated constructor stub}@Overridepublic void execute_1() {// TODO Auto-generated method stubreceiver.action_1();}@Overridepublic void execute_2() {// TODO Auto-generated method stubreceiver.action_2();}}//要求该命令执行这个请求class Invoker{private Command command;public void SetCommand (Command command){this.command=command;}public void excutecommand_1(){command.execute_1();}public void excutecommand_2(){command.execute_2();}}//Receiver类 知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者class Receiver{public void action_1(){System.out.println("action_1");}public void action_2(){System.out.println("action_2");}}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubReceiver r=new Receiver();Command c=new ConcreteCommand(r);Invoker i=new Invoker();i.SetCommand(c);i.excutecommand_1();i.excutecommand_2();System.out.println("");}}/* * 命令模式优点: * 1.比较容易的设计一个命令队列 * 2.在需要的情况下,可以比较容易的将命令记入日志 * 3.允许接收请求的一方决定是否否决请求 * 4.可以容易的实现对请求的撤销和重做 * 5.增加新的具体命令类很容易 * 6.关键优点:::命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开来 *  *  */ 


原创粉丝点击