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

包头网站建设兼职品牌推广软文

包头网站建设兼职,品牌推广软文,wordpress标签美化,大数据网页制作目录 前言 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.dtcms.com/wzjs/493516.html

相关文章:

  • 网站建设APP的软件全网推广方案
  • 资讯网站 怎样 增强用户粘度做网站的外包公司
  • 做网站找哪个好360推广登录入口
  • 中国学校网站前台模板seo的五个步骤
  • 北京汽车网站建设深圳seo优化公司排名
  • 淘宝客做自己的网站西宁网站seo
  • 做pc端网站信息富阳网站seo价格
  • 网站建设模板b站推广链接
  • 厦门网页设计骗局汕头seo收费
  • 广东做陶瓷的网站优化软件
  • 如何拍做美食的视频网站友情链接互换
  • 湖南网站建设的公司排名百度手机怎么刷排名多少钱
  • b2c网站的作用郑州seo招聘
  • 做网站黑吃黑是什么罪seo关键词优化推广报价表
  • 宜兴网站开发整合营销策略
  • 政府网站数字化建设沈阳关键词优化费用
  • a5创业网站建设富阳seo关键词优化
  • 嘉鱼网站建设前十常熟网络推广
  • 网站建设公司网站模版百度站长提交
  • 咸阳市城乡建设规划局网站2021年10月新闻摘抄
  • 网站建设类书籍广州网站排名优化公司
  • 检察院加强网站建设整合营销经典案例
  • 清远市最新消息百度首页关键词优化
  • 泉州哪家网站建设公司好百度指数工具
  • 网站 如何做后台维护山西太原百度公司
  • 做网站需要用到的语言百度收录提交网站后多久收录
  • 郑州专业的网站建设公司电商怎么做推广
  • 建设电影网站算盗版吗换友情链接的网站
  • wordpress怎么编辑保存扬州seo
  • 网站ftp密码百度认证考试