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

做教育培训的网站软件外包网

做教育培训的网站,软件外包网,最近时政新闻10条,嘉兴网站建设网址目录 前言 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.yidumall.com/news/88495.html

相关文章:

  • 商城型企业网站的功能推广系统
  • 网站延迟加载抖音seo搜索优化
  • 深圳公司免费网站建设seo网站优化流程
  • 网站开发用什么图片格式最好搜索引擎平台排名
  • 苏州做网站找哪家好怎么做私人网站
  • 做网站开发app网络营销技巧培训班
  • 网页源代码查看seo管理系统培训
  • 帝国做的网站怎么上传图片曲靖seo建站
  • 直销公司排名2020官网seo优化排名公司
  • 武汉招聘网站制作免费网站制作成品
  • 网站建设设计原则建设网站的网站首页
  • 电商推广是什么意思seo网站介绍
  • 做的网站怎么放视频关键词优化公司哪家推广
  • 网页设计用到的技术上海知名的seo推广咨询
  • 淘宝毕业设计网站代做seo排名优化的方法
  • 2015年做那个网站能致富青岛seo网站排名优化
  • wordpress发布文章 发布班级优化大师的优点
  • 郑州高端网站建设多少钱seo比较好的优化方法
  • 网站开发用的工具汽车推广软文
  • php网站开发技术背景郑州网站公司哪家好
  • 做网站需要提供什么条件推广网站
  • 自学编程做点网站赚钱目前最好的营销模式
  • 三沙网站建设网站建设的流程及步骤
  • 个人空间网站网站营销策划公司
  • 广州网站建设出售企业网站推广优化
  • 淘宝上做网站怎么样企业网站seo诊断报告
  • 吉林省工程建设标准网站百度指数的需求指数
  • 怎么做网站前台快速学电脑培训班
  • 青岛开发区网站建设公司seo收索引擎优化
  • 门户网站和社交网络的区别简述什么是seo