JS命令模式个人理解
JS命令模式个人理解
//BODY部分
<body>
<button id="execute">打开电视</button>
<button id="undo">关闭电视</button>
</body>
//JavaScript部分
<script>
var Tv={//面向字面量
open:function(){
console.log('打开电视机');
},
close:function(){
console.log('关闭电视');
}
} var OpenTvCommand=function(receiver){//一个函数,new之后才可以访问receiver
this.receiver=receiver;
} OpenTvCommand.prototype.execute=function(){//OpenTvCommand中添加一个execute方法
this.receiver.open();
//this.receiver.close();
} OpenTvCommand.prototype.undo=function(){//OpenTvCommand中添加一个undo方法
this.receiver.close();
} var setCommand=function(command){//执行命令函数
document.getElementById('execute').onclick=function(){
command.execute();
//console.log(command);
//console.log(OpenTvCommand.execute());
}
document.getElementById('undo').onclick=function(){
command.undo();
}
} setCommand(new OpenTvCommand(Tv));
//console.log(new OpenTvCommand(Tv));
</script>
分析:
第一步:new OpenTvCommand(Tv) 实例化一个OpenTvCommand(Tv)函数,
得到一个OpenTvCommand(receiver:Object)对象,
Object中包含两个对象open()和close()方法
第二步:setCommand(new OpenTvCommand(Tv)) 中的new OpenTvCommand(Tv)可以把它看做open()和close()两个方法传过去,
传递给setCommand()对象,command.execute()再回到 OpenTvCommand.prototype(execute,undo包含这两个方法)的方法中自由匹配自身函数与TV对象中的方法,
然后再执行OpenTvCommand.prototype自身有的方法
PS:如何要想在execute或者undo中添加方法,只需添加一个Tv中的方法即可,这就是我理解的命令模式
JS命令模式个人理解的更多相关文章
- js命令模式
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 从命令模式的结构图可以看出,它涉及到五个角色,它们分别是 ...
- js 命令模式 组合模式
* 基本宏命令 var closeDoorCommand = { execute: function() { console.log("Closing the door..."); ...
- iOS设计模式之命令模式
命令模式 基本理解 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化:对请求队列或记录请求日志,以及支持客可撤离的操作. 苹果的Target-Action ...
- C++设计模式——命令模式
什么是命令模式? 在GOF的<设计模式:可复用面向对象软件的基础>一书中对命令模式是这样说的:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以 ...
- 【设计模式】行为型06命令模式(Command Pattern)
命令模式 个人理解:命令模式,本质上是一种多层次的封装. 好处:降低耦合,扩展极其方便. 以下一段文案摘抄自:http://www.runoob.com/design-pattern/command- ...
- 大熊君说说JS与设计模式之------命令模式Command
一,总体概要 1,笔者浅谈 日常生活中,我们在看电视的时候,通过遥控器选择我们喜欢的频道时,此时我们就是客户端的角色,遥控器的按钮相当于客户请求,而具体执行的对象就是命令对象, 命令模式把一个请求或者 ...
- js设计模式(11)---命令模式
0.前言 早上好,早晨的时光总是美好的,坐在空调屋里,看着外边的蓝天白云,不停地敲击着键盘,多么美好地享受,也许屌丝就是如此容易满足. 1.什么是命令模式? 用于将一个请求封装为一个对象,从而可用不同 ...
- JS 设计模式五 -- 命令模式
概念 命令模式中的命令(command) 指的是 一个执行某些待定事情的指令. 用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间的耦合关系. 例子 假设html结构如下: &l ...
- 深入理解JavaScript系列(34):设计模式之命令模式
介绍 命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及执行可撤销的操作.也就是说改模式旨在将函数的调用.请求和 ...
随机推荐
- C语言学习笔记(七)——其它运算符
第七章 其它运算符 逗号运算符 逗号运算符:即顺序点,逗号前先运行.后再运行. for循环的运行次数: for(i=n; i<m; + ...
- centos6.5安装Apache+MySQL+PHP
一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysql mysql-server 安装完毕,让 MySQ ...
- JS中单引號/双引號以及外部js引入的一些问题
一.单引號和双引號的使用方法的问题 在JavaScript中能够使用单引號.双引號.二者也能够混合使用. 可是,身为菜鸟的我,却碰到了一些引號的使用问题. <body> <div s ...
- e.target与e.currentTarget对比
复制以下代码,即可查看效果 <!DOCTYPE html> <html> <head lang="en"> <meta charset=& ...
- dynamic与var
dynamic与var示例 var是一种语法省略写法,编译器会根据上下文推断出正确的类型. , , , , , , , }; foreach (var item in scores) { Consol ...
- iOS 蓝牙功能 bluetooth
现将创建蓝牙工程的要点总结一下,由于工程主要涉及中心模式,所以只总结中心模式的用法 1,引入CoreBluetooth.framework 2,实现蓝牙协议,如: .h文件如下 @protocol C ...
- poj1861 最小生成树 prim & kruskal
// poj1861 最小生成树 prim & kruskal // // 一个水题,为的仅仅是回味一下模板.日后好有个照顾不是 #include <cstdio> #includ ...
- 统计输入的单词中有几个长度大于n的,n是自己指定的,用函数对象实现
#ifndef COUNT_WORD_H #define COUNT_WORD_H #include <string.h> #include <iostream> #inclu ...
- Discrete Function(简单数学题)
Discrete Function There is a discrete function. It is specified for integer arguments from 1 to N (2 ...
- Cow Contest(传递闭包)
Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10450 Accepted: 5841 Desc ...