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

洛阳住房和城乡建设厅网站动画设计专业要艺考吗

洛阳住房和城乡建设厅网站,动画设计专业要艺考吗,企业信息系统有哪些,网站建设哪里好点目录 前言 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.yayakq.cn/news/760714/

相关文章:

  • 山东青岛网站建设业网站建设
  • 微网站建设完不知道怎么推广咋办widget earth wordpress
  • 南京移动网站建设效果好百度明星人气榜排名
  • 做果蔬零售的网站红酒公司网站建设模板6841
  • 网站后台怎么做的编程python适合多大孩子学
  • 吉安网站建设兼职seo是什么化学名称
  • 移动端网站开发教程python线上培训比较好的机构
  • wordpress伪造ip泉州市做网站优化
  • 廊坊网站制作报价河南省做网站的公司有哪些
  • 亚马逊网站建设案例分析大泽山seo快速排名
  • 顺德网站建设策划wordpress weex
  • 嘉兴网站seo公司和恶魔做交易的网站
  • 新上线的网站怎么做优化直通车代运营
  • 网站开发策略都有啥html网站设计论文
  • 邱县专业做网站app模板制作软件免费下载
  • 中国建设官方网站登录汕头专业网页设计培训哪个好
  • 徐州企业网站推广公司网站建设费计入科目
  • 施坦威网站关于我们易企秀可以做微网站吗
  • 企业网站seo网址wordpress的数据库有多大
  • app开发软件财务预测口腔医院网站做优化
  • 网站开发绩效考核与薪酬公司招聘要求
  • 网站开发工具微软百度指数功能有哪些
  • 怎么把网站放到空间内蒙包头网站开发
  • 网站升级改版需要多久网站一定也做数据库吗
  • 东营远见网站建设公司保定网络公司电话
  • 网站建设yankt网站备案费一般是多少
  • 门户 网站开发周期桂林论坛网网站电话
  • 茂名市建设局网站企业做网站的钱怎么做账
  • 沧州市网站制作163邮箱官方注册入口
  • 网站开发技术要学什么新华seo推广