• JS设计模式之命令模式


    在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()+" 刷新菜单目录 "; } } var SubMenu = { add: function(){ var cur_date = new Date(); document.getElementById("textarea").value+=cur_date.toLocaleString()+" 新增菜单目录 "; }, del: function(){ var cur_date = new Date(); document.getElementById("textarea").value+=cur_date.toLocaleString()+" 删除子级菜单 ";} } //封装行为在命令类中 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>

    一道逻辑思维题

    有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?


    140->70+70 获得两份70克(第一次)

    70->35+35  获得一份70克 两份35克(第二次)


    35+70=105  获得一份105克和一份35克
    105->50+7+ 55+2  获得一份50克的盐和55克的盐(第三次)

    55+35=90 把55克的盐和35克的放在一起90克

  • 相关阅读:
    文件的基本操作
    ps工作界面
    HDU 6300
    HDU 6298
    HDU 2037
    HDU 2036
    Tesseract OCR
    What is the difference between position: static,relative,absolute,fixed
    How to Call a synchronize function asynchronizly in C#
    WCF note1
  • 原文地址:https://www.cnblogs.com/goodboyzjm/p/11552128.html
Copyright © 2020-2023  润新知