javascript设计模式-观察者模式
摘要:观察者模式定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。UML示意图:其中的角色: Subject:主题角色把所有对观察考对象保存在一个对象里,每个主题都可以有任何数量的观察者。主题可以增加和删除观察者对象...
阅读全文
posted @
2015-01-26 20:19
清姿
阅读(262)
推荐(0) 编辑
javascript设计模式-享元模式
摘要:享元模式采用一个共享来有效的支持大量细小粒度的对象,避免大量有相同内容的类的开销(如内存耗费),共享一个元类。应用场景:页面存在大量的资源密集型对象;他们具备一些共性,可以分离出公共操作的数据。一个例子,汽车登记: var Car = function(make,model,year,owne...
阅读全文
posted @
2015-01-26 19:04
清姿
阅读(230)
推荐(0) 编辑
javascript设计模式-装饰模式
摘要:装饰模式:在不改变原类(对象)和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象。在设计原则中,有一条,多用组合,少用继承,装饰模式正是这一原则的体现。UML示意图:假设自行车商店有4种自行车卖:var ABicycle = function(){ ... }...
阅读全文
posted @
2015-01-22 20:14
清姿
阅读(606)
推荐(1) 编辑
javascript设计模式-适配器模式
摘要:适配器模式的主要作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些对象(类)可以一起工作。UML示意图:例如,鸭子有fly方法和quack(嘎嘎叫)方法,火鸡也有fly方法和gobble(咯咯叫)方法,如果希望火鸡有quack方法,可以复用鸭子的,...
阅读全文
posted @
2015-01-22 19:20
清姿
阅读(545)
推荐(0) 编辑
javascript设计模式-外观模式
摘要:也可译为门面模式。它为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。引入外观角色之后,使用者只需要直接与外观角色交互,使用者与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。 比如在家要看电影,需要打开音响,再打开投影...
阅读全文
posted @
2015-01-20 19:06
清姿
阅读(1943)
推荐(1) 编辑
javascript设计模式-组合模式
摘要:组合模式所要解决的问题:可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的。对这些类区别使用,使得程序更加复杂。递归使用的时候跟...
阅读全文
posted @
2015-01-19 19:09
清姿
阅读(318)
推荐(0) 编辑
javascript设计模式-桥接模式
摘要:在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题。 定义:桥接模式(Bridge),将抽象部分与它的实现部分分离,使他们可以独立的变化。 意图:将抽象与实现解耦。 对于前端,比较常用的场景,是事件监控:...
阅读全文
posted @
2015-01-15 19:11
清姿
阅读(386)
推荐(0) 编辑
javascript设计模式-工厂模式
摘要:简单工厂模式:使用一个类来生成实例。复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例。简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口。通过工厂,可以取得需要的实例。逻辑示意图:下面列举了一个例子:var Coffee = function(){...
阅读全文
posted @
2015-01-13 19:54
清姿
阅读(165)
推荐(0) 编辑
javascript设计模式-单例模式
摘要:在C#中,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,会提供一个静态方法,通过该静态方法可以取得唯一实例。这就确保了一个类只有一个实例对象:public class Singleton{ private static Sing...
阅读全文
posted @
2015-01-12 19:41
清姿
阅读(305)
推荐(0) 编辑