python制作的网站,延平网站建设wzjseo,最新军事新闻,昆明官网seo厂家目录用途命令模式 (Command)将一个请求封装为一个对象#xff0c;从而使你可以用不同的请求对客户进行参数化#xff1b;对请求排队或请求日志#xff0c;以及支持可撤销的操作。命令模式是一种行为型模式。结构图-命令模式结构图Command: 用来声明执行操作的接口。abstract…目录用途命令模式 (Command)将一个请求封装为一个对象从而使你可以用不同的请求对客户进行参数化对请求排队或请求日志以及支持可撤销的操作。命令模式是一种行为型模式。结构图-命令模式结构图Command: 用来声明执行操作的接口。abstract class Command {protected Receiver receiver;public Command(Receiver receiver) {this.receiver receiver;}public abstract void Execute();}ConcreteCommand: 将一个接收者对象绑定一个动作调用接收者相应的操作以实现Execute。class ConcreteCommand extends Command {public ConcreteCommand(Receiver receiver) {super(receiver);}Overridepublic void Execute() {receiver.Action();}}Invoker: 要求该命令执行这个请求。class Invoker {private Command command;public Invoker(Command command) {this.command command;}public void ExecuteCommand() {command.Execute();}}Receiver: 知道如何实施与执行一个与请求相关的操作任何类都可能作为一个接收者。class Receiver {public void Action() {System.out.println(执行请求);}}Client: 创建一个具体命令对象并设定它的接受者。public class CommandPattern {public static void main(String[] args) {Receiver receiver new Receiver();Command cmd new ConcreteCommand(receiver);Invoker invoker new Invoker(cmd);invoker.ExecuteCommand();}}交互图-命令模式交互图1、Client 创建一个 ConcreteCommand 对象并指定他的 Receiver 对象。2、某个 Invoker 对象存储该 ConcreteCommand 对象。3、该 Invoker 通过调用 Command 对象的 Execute 操作来提交一个请求。若该命令是可撤销的ConcreteCommand 就在执行 Execute 操作之前存储当前状态以用于取消该命令。4、ConcreteCommand 对象对调用它的 Receiver 的一些操作以执行该请求。要点1、命令模式的本质是对命令进行封装将发出命令的责任和执行命令的责任分割开。2、每一个命令都是一个操作请求的一方发出请求要求执行一个操作接收的一方收到请求并执行操作。3、命令模式允许请求的一方和接收的一方独立开来使得请求的一方不必知道接收请求的一方的接口更不必知道请求是怎么被接收以及操作是否被执行、何时被执行以及是怎么被执行的。4、命令模式使请求本身成为一个对象这个对象和其他对象一样可以被存储和传递。5、命令模式的关键在于引入了抽象命令接口且发送者针对抽象命令接口编程只有实现了抽象命令接口的具体命令才能与接收者相关联。推荐参考资料《大话设计模式》《HeadFirst设计模式》