当前位置: 首页 > news >正文

做教育培训的网站cps广告联盟网站

做教育培训的网站,cps广告联盟网站,2019个人建设网站,北京网优化seo优化公司目录 前言 UML plantuml 类图 实战代码 模板 Command Invoker Receiver Client 前言 命令模式解耦了命令请求者(Invoker)和命令执行者(receiver),使得 Invoker 不再直接引用 receiver,而是依赖于…

目录

前言

UML

plantuml

类图

实战代码

模板

Command

Invoker

Receiver

Client


前言

命令模式解耦了命令请求者(Invoker)和命令执行者(receiver),使得 Invoker 不再直接引用 receiver,而是依赖于抽象的命令接口。具体的命令类则直接引用 receiver,通过调用 receiver 的方法来执行命令。

解耦之后,具体命令的增删改不再影响 Invoker,同时,抽象出来的命令请求还能队列化,从而实现撤销和重试功能,或做排列组合合成复杂的命令。

在 Invoker 中,也体现了桥接模式的思想,将命令的抽象和具体的实现分离,使 Invoker 中命令的添加和扩展更加简单。不过具体的命令类并不直接实现处理逻辑,而是交给了 receiver 来实现,这也是命令模式和桥接模式最主要的区别。

UML

plantuml

@startuml
'https://plantuml.com/class-diagraminterface Command {+ execute() : void
}class CommandA {- receiver : Receiver+ CommandA(Receiver)+ execute() : void
}class CommandB {- receiver : Receiver+ CommandB(Receiver)+ execute() : void
}class Receiver {+ executeA() : void+ executeB() : void
}class Invoker {- commands : List<Command>+ addCommand(Command) : void+ execute(Command) : void+ executes() : void
}class Client {}Command <|.. CommandA
Command <|.. CommandBCommandA "1" --> "1" Receiver
CommandB "1" --> "1" ReceiverInvoker "1" --> "n" CommandClient ..> Invoker
Client ..> Command@enduml

类图

实战代码

模板

Command

public interface Command {void execute();
}public class ConcreteCommand1 implements Command {private Receiver receiver;public ConcreteCommand1(Receiver receiver) {this.receiver = receiver;}public void execute() {receiver.execute1();}
}public class ConcreteCommand2 implements Command {private Receiver receiver;public ConcreteCommand2(Receiver receiver) {this.receiver = receiver;}public void execute() {receiver.execute2();}
}

Invoker

public class Invoker {private List<Command> commands = new ArrayList<Command>();public void addCommand(Command command){commands.add(command);}public void execute(Command command){command.execute();}public void executes(){for(Command command : commands){command.execute();}commands.clear();}
}

Receiver

public class Receiver {public void execute1() {System.out.println("execute1.");}public void execute2() {System.out.println("execute2.");}
}

Client

public class Test {public static void main(String[] args) {Receiver receiver = new Receiver();Invoker invoker = new Invoker();invoker.execute(new Command1(receiver));invoker.addAction(new Command1(receiver));invoker.addAction(new Command2(receiver));invoker.executes();}
}

http://www.dinnco.com/news/74622.html

相关文章:

  • 网站开发需要多钱百度搜索简洁版网址
  • 手机网站微信咨询百度网站电话是多少
  • 美团网站界面设计优化搜狗排名
  • 使用阿里云做镜像网站免费拓客软件
  • m2c是什么意思网站关键词优化多少钱
  • 无锡企业网站制作公司seo交流网
  • 门户网站和搜索网站的区别学校网站模板
  • 个人网站设计成品免费推广产品的平台
  • 网站开发 团队协作服务营销的概念
  • 网站建设项目经理招聘长沙百度快速排名优化
  • 曲靖做网站的公司seo难不难学
  • 好的网页设计网站南京百度提升优化
  • 世界杯网站建设杭州最好的电商培训机构
  • 网站开发技术构架国际军事新闻
  • 电子商务网站建设课外实训获客引流100种方法
  • ps教程自学网新手教程详细步骤seo效果最好的是
  • 吉林政府网站建设网络推广 网站制作
  • 新手如何做网站优化晋城今日头条新闻
  • 哪建设网站杭州seo培训
  • 天津谁做网站响应式网站模板的应用
  • 微信用大型网站站做跳板百度官网首页网址
  • 定远县建设局网站脑白金网络营销
  • 武汉光谷做网站公司七台河网站seo
  • 网站注册需要什么河南网站推广那家好
  • wordpress网站速度检测长沙靠谱seo优化价格
  • 国际军事形势分析seo关键词快速提升软件官网
  • 佛山网站优化推广方案网站开发流程的8个步骤
  • 国外网站建设发展现状免费网站推广平台
  • 网站建设的成本分析网站推广服务外包
  • 做百度网站一般多少钱如何自己免费制作网站