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

导航网站教程东莞seo网站建设公司

导航网站教程,东莞seo网站建设公司,wordpress建站连接数据库,sns社交网站有哪些命令模式#xff08;Command Pattern#xff09;是一种行为型设计模式#xff0c;它旨在将请求发送者和接收者解耦#xff0c;通过将一个请求封装为一个对象#xff0c;从而允许参数化客户端对象以进行不同的请求、排队请求或记录请求#xff0c;并支持可撤销操作。 在软… 命令模式Command Pattern是一种行为型设计模式它旨在将请求发送者和接收者解耦通过将一个请求封装为一个对象从而允许参数化客户端对象以进行不同的请求、排队请求或记录请求并支持可撤销操作。 在软件开发中经常会遇到需要将操作请求和操作的具体实现相分离的场景。比如在一个图形编辑软件里用户可能执行绘制图形、移动图形、删除图形等多种操作。如果将这些操作的发起和具体执行逻辑紧密耦合在一起会使代码的可维护性和扩展性变差。命令模式就是为了解决这类问题而诞生的它把对操作的请求封装成独立的对象使得我们可以像处理其他数据一样来处理这些操作请求。 一、核心思想 命令模式的核心在于将一个请求命令封装为一个对象。这样做的好处是可以将请求参数化方便对请求进行存储、传递、调用、排队、记录日志以及支持撤销和重做等操作。通过这种方式把发出命令的责任和执行命令的责任分割开降低了系统模块之间的耦合度。 二、定义与结构 定义将一个请求封装为一个对象从而使你可以用不同的请求对客户进行参数化对请求排队或者记录请求日志以及支持可撤销的操作。结构 Command命令这是一个抽象类或接口声明了执行操作的抽象方法execute()。ConcreteCommand具体命令实现了Command接口它知道具体的接收者对象并在execute方法中调用接收者的相应操作方法。Receiver接收者负责执行命令所要求的具体操作它包含了真正实现业务逻辑的代码。Invoker调用者负责调用命令对象执行请求它持有一个命令对象的引用通过调用命令对象的execute方法来触发操作。 三、角色 命令Command为所有具体命令类定义了统一的接口使得调用者可以统一地调用命令的执行方法。具体命令ConcreteCommand将一个接收者对象和一个动作绑定在执行execute方法时调用接收者的相应动作。接收者Receiver知晓如何执行与请求相关的具体操作是命令真正的执行者。调用者Invoker负责安排命令的执行它并不关心命令的具体实现只关心如何触发命令的执行。 四、实现步骤及代码示例 定义命令接口 public interface Command {void execute(); }定义接收者类 public class Light {public void on() {System.out.println(Light is on);}public void off() {System.out.println(Light is off);} }定义具体命令类 public class LightOnCommand implements Command {private Light light;public LightOnCommand(Light light) {this.light light;}Overridepublic void execute() {light.on();} }public class LightOffCommand implements Command {private Light light;public LightOffCommand(Light light) {this.light light;}Overridepublic void execute() {light.off();} }定义调用者类 public class RemoteControl {private Command command;public RemoteControl(Command command) {this.command command;}public void pressButton() {command.execute();} }测试代码 public class Main {public static void main(String[] args) {Light light new Light();Command lightOnCommand new LightOnCommand(light);Command lightOffCommand new LightOffCommand(light);RemoteControl onRemote new RemoteControl(lightOnCommand);RemoteControl offRemote new RemoteControl(lightOffCommand);onRemote.pressButton();offRemote.pressButton();} }五、常见技术框架应用 JavaScript 实现命令模式 // 接收者 function Door() {this.open function () {console.log(Door is opened);};this.close function () {console.log(Door is closed);}; }// 命令接口 function Command(door) {this.door door; }// 具体命令 function OpenDoorCommand(door) {Command.call(this, door);this.execute function () {this.door.open();}; }function CloseDoorCommand(door) {Command.call(this, door);this.execute function () {this.door.close();}; }// 调用者 function Remote(door) {this.command null;this.setCommand function (command) {this.command command;};this.pressButton function () {if (this.command) {this.command.execute();}}; }// 使用示例 let door new Door(); let openCommand new OpenDoorCommand(door); let closeCommand new CloseDoorCommand(door);let remote new Remote(door); remote.setCommand(openCommand); remote.pressButton();remote.setCommand(closeCommand); remote.pressButton();六、应用场景 当你需要在不同的时刻指定、排列和执行请求的时候。 当你需要支持命令的撤销Undo功能时。 当你需要将请求作为对象进行传递和操作时。 当你需要组合多个操作形成宏命令时。遥控器控制如上面的示例所示可以用命令模式实现遥控器来控制不同的家电设备如电视、音响和灯。文本编辑器操作文本编辑器中的撤销、重做、剪切、复制、粘贴等操作可以使用命令模式来实现。菜单系统图形用户界面GUI应用中的菜单项和按钮操作可以通过命令模式来处理。游戏中的动作在游戏中角色的动作和命令如攻击、防御、跳跃等可以使用命令模式来处理。多级撤销操作命令模式支持撤销和重做操作因此在需要多级撤销的应用中很有用如图像编辑器或CAD软件。日程安排应用在日程安排应用中可以使用命令模式来处理添加、编辑、删除事件等操作。 七、优缺点 优点 解耦调用者和接收者调用者和接收者之间通过命令对象进行交互调用者无需了解接收者的具体实现细节降低了模块之间的耦合度。支持命令的扩展和组合可以很方便地定义新的命令类也可以将多个命令组合成一个复合命令以实现更复杂的功能。便于实现撤销和重做通过在命令对象中保存操作的相关状态信息可以很方便地实现操作的撤销和重做功能。 缺点 增加系统复杂度由于引入了命令对象和相关的类会增加系统的类和对象数量导致系统复杂度上升尤其是在命令种类繁多的情况下。性能开销命令的封装和传递会带来一定的性能开销在对性能要求极高的场景下需要谨慎评估是否适合使用命令模式。
http://www.dnsts.com.cn/news/23655.html

相关文章:

  • html5自适应手机网站模板免费公司宣传视频制作软件
  • 做效果图网站霸县网站建设
  • 青岛市住房和城乡建设局官方网站陇南建设网站
  • 蓝彩网络科技_齐齐哈尔微信营销_齐齐哈尔网站建设赣县人才网招聘信息网
  • 外包加工网收费网站优化前景
  • 大同网站建设哪里好宽带网络哪家好
  • WordPress创建的网站南开做网站的公司
  • 网站的建设与维护工资重庆市工程建设招标投标交易信息网
  • 免费的个人网站平台莆田网站建设维护
  • 建网站啦怎么制作平台网站
  • 做视频网站需要哪些技术指标昌吉州建设局网站
  • 威海建设公司网站房产销售网站设计
  • 打开无忧管理后台网站医疗器械网站建设
  • 用ps个人网站怎么做赤峰网站开发red
  • 网站的页面大小推广手段和渠道有哪些
  • 给网站做优化怎么做广州哪里做公司网站号
  • 贵州企业网站建设价格网页设计素材模版
  • 用花生棒做网站快吗服务器网站目录
  • 网站开发什么技术网站如何做导航条下拉菜单
  • 免费单页网站wordpress功能小工具
  • 做最优秀的自己演讲视频网站手机pc微信三合一网站
  • wordpress 大站关于宠物的网页设计
  • 晋江网站建设qzdzi深圳手机商城网站设计费用
  • 网站建设 开发人一丶一一人一一正在建设中的网站可算违规
  • 大厂做网站淘宝店铺怎么运营起来
  • 做外贸卖小商品是哪个网站邢台 建网站
  • 济南做网站的中企集团微网站建设
  • php如何给网站做支付接口中国建筑集团有限公司校园招聘
  • 网站中qq跳转怎么做的wordpress搭建tag页面
  • 潍坊网站建设(首选聚搜网络)宁波网站推广外包服务