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

揭阳商城网站建设泾县网站seo优化排名

揭阳商城网站建设,泾县网站seo优化排名,门户营销型网站搭建,查域名是否被墙命令模式 问题背景命令模式基本介绍UML类图 解决方案UML类图代码示例 问题背景 1#xff09;随着现在科技越来越先进#xff0c;我们在家庭中对物品的开关都不需要亲自走过去来进行了。我们只需要通过手机APP中的按键来远程执行这个命令。 2#xff09;其实这就是命令模式随着现在科技越来越先进我们在家庭中对物品的开关都不需要亲自走过去来进行了。我们只需要通过手机APP中的按键来远程执行这个命令。 2其实这就是命令模式使用者完全不需要懂这个命令如何执行谁来执行使用者只需要发送命令即可。 3命令模式可将“动作的请求者”从“动作的执行者对象中解耦出来 命令模式 基本介绍 1命令模式(Command Pattern)在软件设计中我们经常需要向某些对象发送请求但是并不知道请求的接收者是谁也不知道彼请求的操作是哪个 我们只需在程序运行时指定具体的请求接收者即可此时可以使用命令模式来进行设计 2命名模式使得请求发送者与请求接收者消除彼此之间的耦合让对象之间的调用关系更加灵活实现解耦。 3在命令模式中会将一个请求封装为一个对象以便使用不同参数来表示不同的请求(即命名)同时命令模式也支持可撤销的操作。 4通俗易懂的理解将军发布命令士兵去执行。其中有几个角色将军(命令发布者)、士兵 (命令的具体执行者) 、命令(连接将军和士兵)。 Invoker是调用者 (将军)Receiver是被调用者 (士兵)MyCommand是命令实现了Command接口持有接收对象 5命令的发送者完全不需知道谁来执行只需要发送 UML类图 1Invoker是调用者角色 2Command是命令调用者需要执行所有命令都在这里可以是接口或者抽象类 3Receiver是接收者具体执行命令的角色 4ConcreteCommand将一个接收者对象与一个动作绑定调用接收者相应的操作 5不理解可结合实际问题解决得UML类图来理解 解决方案 UML类图 1原始物品LightReceiver有开关方法 2继承Command接口创建等得开关命令开灯命令撤回方法就是关灯关灯方法撤回方法就是开灯 3创建一个RemoteController来保存这些命令调用得时候直接调用RemoteController类即可 4NoCommand是一个空命令可以简化我们的判空操作 5RemoteController类中有两个属性map用来保存命令stack用来记录执行的命令 代码示例 /*** 灯* * author wenqiang* date 2023/6/1*/ public class LightReceiver {public void on() {System.out.println(开灯);}public void off() {System.out.println(关灯);} }/*** 命令接口* * author wenqiang* date 2023/6/1*/ public interface Command {/*** 执行命令*/void execute();/*** 撤回命令*/void undo(); }/*** 开灯命令** author wenqiang* date 2023/6/1*/ public class LightOnCommand implements Command {private LightReceiver lightReceiver new LightReceiver();Overridepublic void execute() {lightReceiver.on();}Overridepublic void undo() {lightReceiver.off();} }/*** 关灯命令** author wenqiang* date 2023/6/1*/ public class LightOffCommand implements Command {private LightReceiver lightReceiver new LightReceiver();Overridepublic void execute() {lightReceiver.off();}Overridepublic void undo() {lightReceiver.on();} }/*** 空命令** author wenqiang* date 2023/6/1*/ public class NoCommand implements Command {Overridepublic void execute() {System.out.println(空命令);}Overridepublic void undo() {System.out.println(空命令);} }/*** 控制界面** author wenqiang* date 2023/6/1*/ public class RemoteController {/*** 用来保存命令的设置信息*/private MapString, Command map new HashMap(8);/*** 用来保存执行的命令 【使用栈】 【用于命令撤回】*/private StackCommand stack new Stack();/*** 设置命令** param name* param command*/public void setCommond(String name, Command command) {map.put(name, command);}/*** 开** param name*/public void on(String name) {Command command map.getOrDefault(name, new NoCommand());command.execute();stack.push(command);}/*** 关** param name*/public void off(String name) {Command command map.getOrDefault(name, new NoCommand());command.execute();stack.push(command);}/*** 撤回**/public void undo() {if (stack.isEmpty()) {new NoCommand().undo();return;}Command pop stack.pop();pop.undo();} }我们来设置命令并使用他们 public class Client {public static void main(String[] args) {// 创建一个控制界面RemoteController remoteController new RemoteController();// 设置命令remoteController.setCommond(灯-开, new LightOnCommand());remoteController.setCommond(灯-关, new LightOffCommand());// 执行命令remoteController.on(灯-开);// 回撤命令remoteController.undo();remoteController.undo();} }执行结果 我们来增加一种设备加入到控制界面 /*** 电视* * author wenqiang* date 2023/6/1*/ public class TelevisionReceiver {public void on() {System.out.println(打开电视);}public void off() {System.out.println(关闭电视);} }/*** 打开电视命令** author wenqiang* date 2023/6/1*/ public class TelevisionOnCommand implements Command {private TelevisionReceiver televisionReceiver new TelevisionReceiver();Overridepublic void execute() {televisionReceiver.on();}Overridepublic void undo() {televisionReceiver.off();} }/*** 关闭电视命令** author wenqiang* date 2023/6/1*/ public class TelevisionOffCommand implements Command {private TelevisionReceiver televisionReceiver new TelevisionReceiver();Overridepublic void execute() {televisionReceiver.off();}Overridepublic void undo() {televisionReceiver.on();} }将新设备的命令增加到控制界面 public class Client {public static void main(String[] args) {// 创建一个控制界面RemoteController remoteController new RemoteController();// 设置命令remoteController.setCommond(灯-开, new LightOnCommand());remoteController.setCommond(灯-关, new LightOffCommand());remoteController.setCommond(电视-开, new TelevisionOnCommand());remoteController.setCommond(电视-关, new TelevisionOffCommand());// 执行命令remoteController.on(灯-开);remoteController.on(电视-开);remoteController.on(电视-关);// 回撤命令remoteController.undo();remoteController.undo();} }执行结果
http://www.dnsts.com.cn/news/92700.html

相关文章:

  • 做老师讲课视频的教育网站网站建设运营维护合同
  • iapp如何用网站做软件电子商务在线网站建设
  • flash个人网站设计公司名称大全两字霸气
  • 完美代码网站dede网站不能够生成
  • 如何进入google网站深圳做微商网站
  • 网站开发安全性分析青浦区网站建设公司
  • 如何建设国外的网站dw做的网站 图片的路径
  • 聊城做网站的公司渠道网站进入沙盒期
  • 宁波网站建设服务报价人力资源六大模块
  • 建设官网的网站wordpress站点相关
  • 科技网站导航豆瓣网网站建设
  • 广州珈瑶公司是哪一年注册的中国网站优化公司
  • 管理系统网站开发网名logo设计制作
  • 建设网站教学网站后台修改
  • 做封面字体下载好的网站建设银行官方网站打不开啊
  • 欧美手表网站wordpress显示选项
  • 需要网站建设关键字优化价格
  • 政务公开网站建设做网站制作软件
  • 宣武手机网站建设asp网站建设 aws
  • 网站建设终身不用维护凡科网做的网站怎么样
  • 店铺装修效果图大全优化设计七年级上册英语答案
  • android网站开发实例教程购物网站模板带后台
  • 网站建设运营策划书新建网站注意事项
  • saas建站源码下载网站建设实训心得php
  • wordpress网站入口长沙制作网站的公司
  • 做网站开发要具备什么知识wordpress模板定做
  • o2o网站开发公司大型网站建站公司
  • 怎么在网站做支付端口对接这几年做那个网站能致富
  • 江桥网站建设wordpress调用文章
  • 某高校门户网站开发案例网站第二次备案