20命令模式

来源:互联网 发布:2017年旅游大数据分析 编辑:程序博客网 时间:2024/06/01 23:37

命令模式

<设计模式其实很简单>笔记


①定义:

将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。对请求排队或记录请求日志,并支持可撤销的操作。


②代码:
//抽象命令public abstract class Command{protected Receiver receiver;//构造函数public Command(Receiver receiver){this.receiver = receiver;}//抽象的执行命令方法abstract public void Execute();}//具体命令public void class ConcreteCommand extends Command{public ConcreteCommand(Receiver receiver){super(receiver);}//覆盖执行方法//执行命令方法@Overridepublic void Execute(){receiver.Action();}}//命令传达类public class Invoker{private Command command;//设定命令public void setCommand(Command command){this.command = command;}//执行命令public void ExecuteCommand(){command.Execute();}}//命令执行者public class Receiver{//行动方法public void Action(){System.out.println("execute the request");}}//客户端public static void main(String[] args){Receiver receiver = new Receiver();Command command = new ConcreteCommand(receiver);Invoker invoker = new Invoker();invoker.setCommand(command);invoker.ExecuteCommand();}//命令模式本质就是对命令进行封装,并且将发出命令的责任和执行命令的责任分割开。不过每个命令都要有一个类


③适用的地方:
当需要抽象出待执行的动作以便参数化某个对象时。
当需要在不同的时刻执行、排列一级执行请求时。
当系统需要支持取消操作时。
当系统需要记录、修改日志时
④优点:
降低了系统的耦合度
新的命令可以很容易地加入到当前系统中
可以比较容易地设计一个命令队列和组合命令。
可以方便地实现对请求的撤销和重做。
0 0
原创粉丝点击