摘要:
中介者模式是迎合迪米特法则的一种实现。迪米特法则也叫最少知识原则,是指一个对象应该尽可能少地了解另一个对象。如果对象间的耦合性太高,一个对象发生改变后,难免会影响到其他的对象。在中介者模式里,对象间几乎不知道彼此的存在,它们只能通过中介者对象来互相影响。因此,中介者模式使各个对象得以解耦,以中介者和 阅读全文
摘要:
职责连模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。 实例:公司针对支付过定金的用户有一定的优惠政策。在正式购买后,已经支付过500员定金的用户会收到100员的商城优惠券,200定金的用户 阅读全文
摘要:
享元(flyweight 蝇量级)模式是一种用于性能优化的模式。享元模式的核心是运用共享技术来有效支持大量细粒度的对象。如果系统中因为创建了大量类似的对象而导致内存占用过高,享元模式就很有用了。在JavaScript中,浏览器特别是移动端的浏览器分配的内存并不算多,如何节省内存就成了一件非常有意义的 阅读全文
摘要:
模板方法模式是一种只需使用继承就可以实现的非常简单的模式。 模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。 阅读全文
摘要:
组合模式的用途: 1.组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。 2.利用对象多态性统一对待组合对象和单个对象。在组合模式中,客户将统一地使用组合结构中的所有对象,而不需要关心它究竟是组合对象还是单个对象 这在实际开发中给客户带来很大的便利性,当我们往万能遥控器里面添加一个命令的 阅读全文
摘要:
观察者模式又叫发布-订阅模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生该变时,所有依赖于它的对象都将得到通知。在JavaScript中,一般用事件模型来替代传统的观察者模式。 下面是售楼处(发布者)与各看房者(订阅者)的例子: var event = { clientList:[], / 阅读全文
摘要:
代理模式是为一个对象提供一个某种功能的替代品,以便控制对它的访问。 在现实生活中,代理模式也是一种非常有意义的模式。比如,演艺明星都有经纪人,经纪人就是他们的代理人。房产中介,婚姻中介,法律顾问等。 保护代理和虚拟代理: 代理将外界的某些信息进行过滤,只有对被代理对象有利、有用的信息才转送给被代理对 阅读全文
摘要:
策略模式的定义是:定义一系列的算法,把它们都封装起来,并使它们可以互相替换。 实例一:使用策略模式计算奖金 很多公司的年终奖是根据员工的工资基数和年底绩效情况来发放的。例如,绩效为S的人年终奖有4倍工资,绩效为A的人年终奖为3倍工资,绩效为B的人年终奖为2倍工资。代码的最初实现为: var calc 阅读全文
摘要:
单例模式的定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。 单例模式是一种常用的设计模式,有些对象我们只需要一个,比如线程池、全局缓存、浏览器中的window对象等。在JavaScript中,单例模式同样应用广泛。 例如下面的代码负责在页面中创建唯一的div: var CreateDiv 阅读全文