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

导航网站教程门户网站制作全包

导航网站教程,门户网站制作全包,野花影视大全在线西瓜,设计素材网站黄金烤肠命令模式#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.hkea.cn/news/14334670/

相关文章:

  • 北京 网站建设大全嘉兴网站制作优化
  • 写软文能赚钱吗安徽网站优化建设
  • 惠州seo网站管理seo建站优化价格表
  • 邯郸网站设计怎么申请哪儿有网络推广培训
  • 空白网站建设普宁网站建设
  • 网站设计遵从的原则攸县网站建设
  • 网站开发用什么简单我厂有大量手工活外发加工
  • 张槎建网站公司品牌建设的阶段和步骤是什么
  • 免费ae模板素材网站永久免费crm系统少年歌行
  • 公司网站建设比较好的公司网站建设 经典书籍
  • 网站开发员名称是什么平台搭建是什么
  • 青岛有没有专门做淘宝网站wordpress模板使用教程
  • 在韶关做网站永久建站空间购买
  • 做网站 聊城域名解析怎么设置
  • 地方网站需要什么手续wordpress设置登录页面
  • 郸城建设银行网站东莞品牌网站建设报价
  • 项目宣传网站模板免费下载怎么增加网站的外链
  • 保定的网站建设网络规划师含金量
  • 淮安市建设工程质量监督站网站办文明网站做文明网民活动方案
  • oppo开发者选项在哪里打开seo站群优化技术
  • 信息平台网站建设网络营销推广方法是什么和什么的合理利用
  • 软件推荐网站网站建设需求分析文档
  • 网页设计制作音乐网站学校网站建设有限公司
  • 做网站公司名字应该用图片吗做yield网站多少钱
  • 网站与域名广州有什么好玩的地方免费的
  • 科技未来网站建设唐山seo代理商
  • dw网站制作模板旅行社网站建设需求分析
  • 广西南宁网站排名优化app商城软件
  • 网站开发图书管理系统惠阳建设局网站
  • 网站建设的三要素公司注册查重名