js设计模式--命令模式

前言

本系列文章主要根据《JavaScript设计模式与开发实践》整理而来,其中会加入了一些自己的思考。希望对大家有所帮助。

文章系列

js设计模式--单例模式

js设计模式--策略模式

js设计模式--代理模式

js设计模式--迭代器模式

js设计模式--发布订阅模式

概念

命令模式中的命令(command)指的是一个执行某些特定事情的指令。

场景

有时候需要向某些对象发送请求,但是并不知道请求的接收 者是谁,也不知道被请求的操作是什么。
如快餐店点餐,我们不需要知道厨师是谁,我们只需要把订单交给服务员

优缺点

请求发送者和请求接收者能够消除彼此之间的耦合关系

例子

按钮点击

简单的实现






  
  
  
  Document



  

  


如果这个点击事件实现很复杂,需要多人合作完成,那我们不得不深入到button1.onclick内部去修改代码,违背了开放封闭原则

命令模式实现






  
  
  
  Document



  

  




JavaScript 作为将函数作为一等对象的语言,跟策略模式一样,命令模式也早已融入到了 JavaScript 语言之中。

js中的命令模式





  
  
  
  Document



  

  



设置背景色的例子

撤销命令

我们现在来实现一个撤销操作的例子:
界面上有四个按钮,三个可以设置不同的背景色,undo按钮可以撤销上一次的操作





  
  
  
  Document



  

重做操作

这里我们增加一个redo按钮,以恢复之前的操作,需要一个currentIndex来记录当前的索引






  
  
  
  Document



  

你可能感兴趣的:(javascript)