首页 > Web开发 > 详细

JS设计模式之命令模式

时间:2019-09-19 20:26:52      阅读:102      评论:0      收藏:0      [点我收藏+]

在js中一共有23种不同的设计模式。

在这里介绍一个简单的命令模式

命令模式是对命令进行封装,由调用者发起命令请求,接收者执行请求。

命令模式把命令抽象成对象,根据传入的命令对象来执行命令,从而减少的对象之间的耦合,使用命令模式使这个模拟变的很好扩展,控制器和命令的执行耦合度很低,可以很容易的扩展命令和控制器.

style中的代码

<style type="text/css">
.bnt{
 margin: 5px;
 border: 0;
 width: 70px;
 height: 35px;
 background: #6B78BF;
 color: white;
 font-size: 14px;
 cursor: pointer;
}
#textarea{
 margin: 5px;
 width: 400px;
 height: 200px;
 resize: none;
 color: #666;
 font-size: 14px;
 border: 2px solid #6B78BF;
}
</style>

js中的代码是

<script type="text/javascript">
// 在页面中使用例:setCommand(btn, refreshMenuBarCommand );来发送命令
// setCommand 函数负责往按钮上面安装命令,预留好安装命令的接口
var setCommand = function( btn , command ){
 btn.onclick = function(){
 command.execute();
 }
}
 
// 编写点击按钮之后的具体行为:刷新菜单界面、增加子菜单和删除子菜单
var MenuBar = {
 refresh: function(){
 var cur_date = new Date();
 document.getElementById("textarea").value+=cur_date.toLocaleString()+" 刷新菜单目录\r"; }
}
var SubMenu = {
 add: function(){
 var cur_date = new Date();
 document.getElementById("textarea").value+=cur_date.toLocaleString()+" 新增菜单目录\r"; },
 del: function(){
 var cur_date = new Date();
 document.getElementById("textarea").value+=cur_date.toLocaleString()+" 删除子级菜单\r";}
} 
//封装行为在命令类中
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 对象
var refreshMenuBarCommand = new RefreshMenuBarCommand( MenuBar );
var addSubMenuCommand = new AddSubMenuCommand( SubMenu );
var delSubMenuCommand = new DelSubMenuCommand( SubMenu );
 
window.onload = function(){
 //把 command 对象安装到 button 上面
 var btn1 = document.getElementById("button1");
 var button2 = document.getElementById("button2");
 var button3 = document.getElementById("button3");
 setCommand( btn1, refreshMenuBarCommand );
 setCommand( btn2, addSubMenuCommand );
 setCommand( btn3, delSubMenuCommand );
}
</script>

 

JS设计模式之命令模式

原文:https://www.cnblogs.com/goodboyzjm/p/11552128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!