博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《JavaScript设计模式与开发实践》读书笔记之命令模式
阅读量:6887 次
发布时间:2019-06-27

本文共 1659 字,大约阅读时间需要 5 分钟。

1.命令模式

1.1 传统的命令模式

命令模式的应用场景:请求的发送者和请求接收者消除彼此耦合关系

以页面点击按钮为例

点击按钮后,借助命令对象,解开按钮和负责具体行为对象之间的耦合

            

定义setCommand函数,绑定行为。

var setCommand=function(button,command){    button.onclick=function(){        command.execute();    }}

最后编写具体的行为,这些行为完成菜单栏的几项功能

var MenuBar={    refresh:function(){        console.log('refresh');    }};var SubMenu={    add:function(){        console.log('add');    },    del:function(){        console.log('del');    }};

把行为封装在命令类中

var RefreshMenuBarCommand=function(receiver){    this.receiver=receiver;};RefreshMenuBarCommand.prototype.execute=function(){    this.receiver.refresh();};var AddSubMenuCommand=function(receiver){    this.receiver=receiver;};AddSubMenuCommand.prototype.execute=function(){    this.receiver.add();};var DelSubMenuCommand=function(receiver){    this.receiver=receiver;};DelSubMenuCommand.prototype.execute=function{    this.receiver.del();}

最后将命令接收者传入到command对象中,并且将command对象绑定到button上

var refreshMenuBarCommand=new RefreshMenuBarCommand(MenuBar);var addSubMenuCommand=new AddSubMenuCommand(SubMenu);var delSubMenuCommand=new DelSubMenuCommand(SubMenu);setCommand(button1,refreshMenuBarCommand);setCommand(button2,addSubMenuCommand);setCommand(button3,delSubMenuCommand);

1.2 JavaScript这的命令模式 

var bindClick=function(button,func){    button.onclick=func;};var MenuBar={    refresh:function(){        console.log('refresh');    }};var SubMenu={    add:function(){        console.log('add');    },    del:function(){        console.log('del');    }};bindClick(button1,MenuBar.refresh);bindClick(button2,SubMenu.add);bindClick(button3,SubMenu.del);

 

转载于:https://www.cnblogs.com/GongQi/p/4652810.html

你可能感兴趣的文章
RHEL6 部署 ORACLE 11gR2
查看>>
Android项目使用support v7时遇到的各种问题
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
c_str函数
查看>>
Linux 用户跟用户组
查看>>
Stale NFS file handle的解决方法
查看>>
mysql之主从复制篇
查看>>
给程序员介绍一些C++开源库
查看>>
CocoaPods详解之----使用篇 pod install/pod update更新慢的问题,
查看>>
ORA-12519, TNS:no appropriate service handler found
查看>>
野蛮生长之后,未来还会留下哪几个超级APP?
查看>>
强化县级政府信息化建设
查看>>
CentOS7.3编译安装MariaDB10.2.12
查看>>
mysql安装问题
查看>>
NSString属性什么时候用copy,什么时候用strong?
查看>>
windows下安装mysql
查看>>
tomcat篇之结合apache+tomcat+memcached做session共享
查看>>
Ubuntu中获取文件名称并生成列表txt
查看>>
在Red Hat5.5下cacti的安装配置
查看>>