美文网首页
不同版本的命令模式

不同版本的命令模式

作者: 俗三疯 | 来源:发表于2017-07-28 09:38 被阅读6次

命令模式的意图是把请求封装为队形,从而分离请求的发起者和请求的接收者的耦合关系,下面是三种不同版本的命令模式


//对象关联的命令模式
// function createAndConnect(original,propertyObject){
// var clone = Object.create(original);
// if(typeof propertyObject == "object"&&propertyObject!=null){
// for(var key in propertyObject){
// clone[key] = propertyObject[key];
// }
// }
// return clone;
// }
// var TV = { //变化内容
// open:function(){
// alert('打开电视机');
// },
// close:function(){
// alert('关闭电视机');
// }
// }
// var openTvCommand = { //电视命令对象
// execute:function(){
// this.open();
// },
// undo:function(){
// this.close();
// }
// };
// var setCommand = function(receiver,command){
// var obj = createAndConnect(command,receiver); //电视对象关联其命令对象
// document.getElementById('execute').addEventListener('click',function(){
// obj.execute();
// },false);
// document.getElementById('undo').addEventListener('click',function(){
// obj.undo();
// },false);
// }
// setCommand(TV,openTvCommand);

// 面向类的命令模式
// var TV = { //变化内容
// open:function(){
// alert('打开电视机');
// },
// close:function(){
// alert('关闭电视机');
// }
// }
// var openTvCommand = function(receiver){ //初始化命令对象,命令对象里面应该有一个接受者
// this.receiver = receiver;
// }
// openTvCommand.prototype.execute = function(){
// this.receiver.open();
// }
// openTvCommand.prototype.undo = function(){
// this.receiver.close();
// }
// var setCommand = function(command){
// document.getElementById('execute').onclick = function(){
// command.execute();
// };
// document.getElementById('undo').onclick = function(){
// command.undo();
// }
// }
// setCommand(new openTvCommand(TV)); //初始化电视命令对象,其receiver为TV对象,当命令对象执行execute和undo时,由TV对象接收

//闭包版本的命令模式
var TV = { //变化内容
open: function () {
alert('打开电视机');
},
close: function () {
alert('关闭电视机');
}
}
var createCommand = function (receiver) {
var execute = function () {
return receiver.open();
}
var undo = function () {
return receiver.close();
}
return {
execute: execute,
undo: undo
}
}
var setCommand = function (command) {
document.getElementById('execute').onclick = function(){
command.execute();
};
document.getElementById('undo').onclick = function(){
command.undo();
}
}
setCommand(createCommand(TV));

本文参考自《Javascript设计模式与开发实践》

相关文章

  • 不同版本的命令模式

    命令模式的意图是把请求封装为队形,从而分离请求的发起者和请求的接收者的耦合关系,下面是三种不同版本的命令模式 //...

  • 讯为开发板itop4412烧录(包含设备树资源)

    操作命令 开发板 旧版本uboot在uboot 模式下 执行 fastboot 命令 便可进入下载模式 新版本u...

  • 命令模式

    本文主要内容 命令模式说明 命令模式示例 1、命令模式说明 命令模式,将请求封装成为对象,以便使用不同的请求、队列...

  • 设计模式:第六篇--命令模式

    命令模式模型 案例:家居遥控器撤销命令宏命令 总结: 命令模式模型 命令模式:将“请求”封装成对象,以便使用不同的...

  • dumpsys 命令用法

    一、 dumpsys命令 1.1 服务列表 不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前...

  • dumpsys 命令用法

    一、 dumpsys命令 1.1 服务列表 不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前...

  • Java设计模式之命令模式

    1. 前言 设计模式中的命令模式是一种行为设计模式。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对...

  • 日志中心配置小记

    在配置交换机S5700系列时,碰到因OS版本不同而操作命令不同的案例,记录如下: 旧版本的OS,版本号 操作命令 ...

  • ntp时钟同步配置

    在配置交换机S5700系列时,碰到因OS版本不同而操作命令不同的案例,记录如下: 旧版本的OS,版本号 操作命令 ...

  • 第四章 Docker命令汇总

    请注意Docker新旧版本命令格式使用方法不同,但新版本兼容老版本的命令格式。本章只是做Docker命令汇总,看着...

网友评论

      本文标题:不同版本的命令模式

      本文链接:https://www.haomeiwen.com/subject/fvrxlxtx.html