0.前言

早上好,早晨的时光总是美好的,坐在空调屋里,看着外边的蓝天白云,不停地敲击着键盘,多么美好地享受,也许屌丝就是如此容易满足。

1.什么是命令模式?

用于将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志以及执行可撤销的操作。也就是说该模式旨在将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。此外,可以降低调用对象和接受对象之间的耦合,提高了模块化程度。

2.使用条件

命令模式的主要用途是把调用对象和接受对象分割开,降低代码的耦合,提高模块化程度,在创建用户界面方面非常有用;二、请求需要排队延迟、不受限制地取消,那么就可以使用该模式。

3.代码说明

var Calculator={
  add:function(x,y){
   return x+y;
  },
  substract:function(x,y){
   return x-y;
  },
  multiply:function(x,y){
   return x*y;
  },
  divide:function(x,y){
   return x/y;
  }
  }
  Calculator.calc =function(command){
  return Calculator[command.type](command.op1,command.opd2)
  };
  Calculator.calc({type:'add',op1:1,op2:1});
  Calculator.calc({type:'substract',op1:5,op2:2});
  Calculator.calc({type:'multiply',op1:5,op2:2});
  Calculator.calc({type:'divide',op1:8,op2:4});

4.个人理解

1.命令模式是为了把一个请求封装成一个对象,这样就可以用多个请求对客户进行参数化;

2.好处:降低调用者和接受者之间的耦合性,提高模块化;可以对请求进行排队、记录请求日记、执行可撤销的操作;

3.在创建用户界面是有很好的用处,可以实现界面元素和实际操作类的分离。

js设计模式(11)---命令模式的更多相关文章

  1. JS 设计模式五 -- 命令模式

    概念 命令模式中的命令(command) 指的是 一个执行某些待定事情的指令. 用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系. 例子 假设html结构如下: &l ...

  2. JS设计模式——5.单体模式

    JS设计模式——5.单体模式 http://www.cnblogs.com/JChen666/p/3610585.html   单体模式的优势 用了这么久的单体模式,竟全然不知!用它具体有哪些好处呢? ...

  3. 设计模式 ( 十三 ) 命令模式Command(对象行为型)

    设计模式 ( 十三 ) 命令模式Command(对象行为型) 1.概述         在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需 ...

  4. 乐在其中设计模式(C#) - 命令模式(Command Pattern)

    原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...

  5. 面向对象设计模式_命令模式(Command)解读

    在.Net框架中很多对象的方法中都会有Invoke方法,这种方法的设计实际是用了设计模式的命令模式, 模式图如下 其核心思路是将Client 向Receiver发送的命令行为进行抽象(ICommand ...

  6. 折腾Java设计模式之命令模式

    博客原文地址 折腾Java设计模式之命令模式 命令模式 wiki上的描述 Encapsulate a request as an object, thereby allowing for the pa ...

  7. 用Java 8 Lambda表达式实现设计模式:命令模式

    在这篇博客里,我将说明如何在使用 Java 8 Lambda表达式 的函数式编程方式 时实现 命令 设计模式 .命令模式的目标是将请求封装成一个对象,从对客户端的不同类型请求,例如队列或日志请求参数化 ...

  8. js设计模式——7.备忘录模式

    js设计模式——7.备忘录模式 /*js设计模式——备忘录模式*/ // 备忘类 class Memento { constructor(content) { this.content = conte ...

  9. js设计模式——6.模板方法模式与职责链模式

    js设计模式——6.模板方法模式与职责链模式 职责链模式

  10. js设计模式——5.状态模式

    js设计模式——5.状态模式 代码演示 /*js设计模式——状态模式*/ // 状态(红灯,黄灯,绿灯) class State { constructor(color) { this.color = ...

随机推荐

  1. SPREAD_NET6

    SPREAD_NET6 下载地址 http://www.gcpowertools.com.cn/downloads/trial/Spread.NET/EN_SPREAD_NET6_SETUP_RA_6 ...

  2. AndroidStudio 问题汇总

    Error:A problem occurred configuring root project 'testProject'. > Could not open cp_proj class c ...

  3. 把Nginx加为系统服务(service nginx start/stop/restart)

    1.编写脚本,名为nginx #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - ...

  4. javascript自执行匿名函数

    1)自执行匿名函数: 常见格式:(function() { /* code */ })(); 2)作用:       function中的code代码在解释时就已经在运行了.因此可以用它创建命名空间, ...

  5. js判断手机是的操作系统

    var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; retu ...

  6. mysql 非安装版本就可以用, 用于打包用

    http://blog.csdn.net/iihero/article/details/5596401 http://blog.csdn.net/iihero/article/details/5596 ...

  7. [SQL]SQL语言入门级教材_SQL语言基本语句介绍(四)

    SQL语言基本语句介绍 • 表的建立 关系数据库的主要特点之一就是用表的方式组织数据.表是SQL语言存放数据.查找数据以及更新数据的基本数据结构.在SQL语言中,表有严格的定义,它是一种二维表,对于这 ...

  8. isIsomorphic

    超时版: /* Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if t ...

  9. python 简单实现文件拷贝

    1.背景 一日加班需要写一个文件拷贝的函数. 写了几版拷贝函数,有需要的直接粘贴过去 def CopyLocaleFile1(sorfile,desfile): #第一版 sorfp=open(sor ...

  10. WEB 安全之 SQL注入 < 二 > 暴库

    SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...