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

标签: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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,269评论 25 708
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,827评论 2 17
  • 天地有正氣,江山不夕陽
    张咚咚阅读 180评论 0 0
  • 现在理解的幸福是,心在一起的感觉,大事一起商量,小事让着我,一起展望未来,一起为未来打拼,在这个过程中相互扶持相互...
    简简单纯阅读 111评论 0 1