随笔分类 - 8.设计模式
摘要:享元(Flyweight)模式是一种经典的结构型设计模式,用于优化重复、缓慢及数据共享效率较低的代码。它旨在通过与相关对象共享尽可能多的数据来减少应用程序中内存的使用。 应用场景 (1)用于数据层,处理内存中保存的大量相似对象的共享数据。 (2)用于DOM层,Flyweight用作中央事件管理器,来
阅读全文
摘要:在《JavaScript设计模式》介绍中,装饰者模式跟Mixin(混入)模式相比,是另一种可行的对象子类化(Mixin模式干的事)的替代方案。 装饰者(Decorator)模式 定义: 给对象动态添加额外的功能。向基本对象添加(装饰)属性或方法,而不是进行子类化,它较为精简。 使用场景: java
阅读全文
摘要:第一次完整看一遍(JavaScript设计模式)该模式的介绍,感觉这不就是继承而已吗,只不过可能是部分继承。 混入(Mixin)模式 定义: Mixin是可以轻松被一个子类或一组子类继承功能的类,目的是函数复用。继承Mixin是扩展功能的方式,另外也可能从多个Mixin类进行继承。 继承方式: 这个
阅读全文
摘要:这个模式是我觉得最好懂的模式。 外观(Facade)模式 定义: 外观模式是一种结构型模式。它为更大的代码体提供了一个方便的高层次接口,能够隐藏其底层的真实复杂性。简单说就是——小接口有大智慧。 例子: 使用jQuery的$(el).css()或$(el).animate()方法时,实际上我们是在使
阅读全文
摘要:这个模式我在书上(JavaScript设计模式)的那个章节来来回回看了几遍,有两个关键点并没有说清楚,导致尽管表面上是很简单明了,但本质没有说清,以下是书上的例子。 书中淡解 例子(改前): 例子(改后,命名模式): 我想不明白,凭什么加上这个方法,就得到了优化,哪里就解耦了。 当carManage
阅读全文
摘要:在读这个模式,头脑里就浮想两个问题: 1. JavaScript的原型模式与普遍的原型模式有什么区别? 2. JavaScript的原型模式与prototype有什么关系? 原型(prototype)模式定义 原型模式(创建型设计模式)是用一个对象做模板,克隆出新对象。 另外原型模式中的克隆分为"浅
阅读全文
摘要:在《JavaScript设计模式》关于中介者模式的介绍里,里面有些错误和擅自添加的例子,虽然例子(英文版没有)是为了让人更好理解,但是该篇章加上的例子却给人误导的感觉,所以如果有人读这个章节时,建议看英文版。 在看这个模式时候,我只想弄明白一点,中介者模式与订阅/发布模式的区别在哪? 中介者(Med
阅读全文
摘要:在未读《JavaScript设计模式》这本书前,在我的印象里,单例模式就是每个类只会产生一个实例,非常简单。在细看到这个模式时候,有些疑惑单例模式与工厂模式的区别,虽然看起来像最大区别在于是否多次实例化。 单例(Singleton)模式 单例模式它限制了类的实例化次数只能一次。在实例不存在的情况下,
阅读全文
摘要:这一篇主要讲述构造器(Constructor)模式和模块(Module)模式以及相关的变体模式,例子是JavaScript代码。 构造器(Constructor)模式 对象构造器用于创建特定类型的对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性和方法的值。
阅读全文
摘要:经过一段工作时间的沉淀后,我发现需要细看一些书籍验证当中获得的经验。在JavaScript上的结构和模式上的考虑,使我决定精读《JavaScript设计模式》(中文版)。在阅读的过程中,发现中文版的某些译文有些不适当的时候,我就会查询相应英文版《Learning JavaScript Design
阅读全文
摘要:在翻阅资料的时候,有人把观察者(Observer)模式等同于发布(Publish)/订阅(Subscribe)模式,也有人认为这两种模式还是存在差异,而我认为确实是存在差异的,本质上的区别是调度的地方不同。 观察者模式 比较概念的解释是,目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供
阅读全文