美文网首页F2e踩坑之路Javascript设计模式
《JS设计模式》读书笔记(四)

《JS设计模式》读书笔记(四)

作者: philoZhe | 来源:发表于2016-11-23 23:53 被阅读135次

    标签:JS 设计模式


    读书笔记链接:


    命令模式

    分离任务的请求者与执行者(谁做和做什么的分离),由于JS可以传递函数,命令模式在JS中是天生存在的。也因此JS中的命令模式的实现并不困难

    更概括,分离了不变的抽象内容与多变的具体内容

    // 这里抽象定义了请求者何时请求任务。
    // 但这里也是具体地限定了onclick事件,所以这个函数在命令模式中不是必须的。
    var setCommand = function(button, command) {
        button.onclick = function() {
            command.execute();
        }
    }
    // 这里抽象定义了任务执行者要做什么,
    // 这里是必须的,以后扩展只要新增命令类就可以,类似策略模式
    var SomeCommand = function(receiver) {
        this.receiver = receiver;
    }
    // execute是约定俗成的
    SomeCommand.prototype.execute = function(){
        this.receiver.doSomething;
    }
    // 通上
    SomeCommand.prototype.undo = function(){
        this.receiver.undoSomething;
    }
    
    // 这里选择具体的任务执行者
    receiver = {doSomething: function(){}, undoSomething:function(){}}
    var command = new SomeCommand(receiver)
    
    // 这里选择任务请求者
    setCommand(button, command)
    // 也可以直接button.onclick = command.execute;
    // 这里是规定了使用command.execute来实现解耦
    // 因为setCommand不够抽象,所以以后还是会常变,怎么写都无所谓了,还是要改。
    
    

    组合模式

    将多个对象组合成一个大对象,外部可以将使用单一对象一样使用组合对象

    书中的例子就是利用上一章的命令模式来介绍组合模式。使用多个命令组成一个大的命令。

    var Marco
    
    
    

    相关文章

      网友评论

        本文标题:《JS设计模式》读书笔记(四)

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