TAT.svenzeng 【Javascript 设计模式 11】-中介者模式
In 未分类 on 2012年10月24日 by view: 12,703
11

中介者对象可以让各个对象之间不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。

打个比方,军火买卖双方为了安全起见,找了一个信任的中介来进行交易。买家 A 把钱交给中介 B,然后从中介手中得到军火,卖家 C 把军火卖给中介,然后从中介手中拿回钱。一场交易完毕,A 甚至不知道 C 是一只猴子还是一只猛犸。因为中介的存在,A 也未必一定要买 C 的军火,也可能是 D,E,F。

TAT.svenzeng 【Javascript 设计模式 10】-模版方法模式
In 未分类 on 2012年10月24日 by view: 8,295
7

模式方法是预先定义一组算法,先把算法的不变部分抽象到父类,再将另外一些可变的步骤延迟到子类去实现。听起来有点像工厂模式 ( 非前面说过的简单工厂模式 ).
最大的区别是, 工厂模式的意图是根据子类的实现最终获得一种对象. 而模版方法模式着重于父类对子类的控制.

TAT.svenzeng 【Javascript 设计模式 9】-策略模式
In 未分类 on 2012年10月24日 by view: 14,812
12

策略模式的意义是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
一个小例子就能让我们一目了然。
回忆下 jquery 里的 animate 方法.

TAT.svenzeng 【Javascript 设计模式 8】-访问者模式
In 未分类 on 2012年10月24日 by view: 11,470
9

待续。。

TAT.svenzeng 【Javascript 设计模式 7】-外观模式
In 未分类 on 2012年10月24日 by view: 11,425
10

外观模式 (门面模式),是一种相对简单而又无处不在的模式。外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用。
用一段再简单不过的代码来表示

TAT.svenzeng 【Javascript 设计模式 6】-桥接模式
In 未分类 on 2012年10月24日 by view: 10,980
10

待续。。

TAT.svenzeng 【Javascript 设计模式 5】-代理模式
In 未分类 on 2012年10月24日 by view: 14,596
10

代理模式的定义是把对一个对象的访问, 交给另一个代理对象来操作.

举一个例子, 我在追一个 MM 想给她送一束花,但是我因为我性格比较腼腆,所以我托付了 MM 的一个好朋友来送。

这个例子不是非常好, 至少我们没看出代理模式有什么大的用处,因为追 MM 更好的方式是送一台宝马。

TAT.svenzeng 【Javascript 设计模式 4】- 适配器模式
In 未分类 on 2012年10月24日 by view: 11,958
6

去年年前当时正在开发 dev.qplus.com, 有个存储应用分类 id 的 js 文件, 分类 id 的结构最开始设计的比较笨重. 于是我决定重构它. 我把它定义成一个 json 树的形式, 大概是这样:

TAT.svenzeng 【Javascript 设计模式 3】-观察者模式
In 未分类 on 2012年10月24日 by view: 27,238
22

观察者模式 ( 又叫发布者-订阅者模式 ) 应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的 dom 事件. 也是 js 和 dom 之间实现的一种观察者模式.

TAT.svenzeng 【Javascript 设计模式 2】-简单工厂模式
In 未分类 on 2012年10月24日 by view: 22,922
21

简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮。

简单工厂模式在创建 ajax 对象的时候也非常有用.

之前我写了一个处理 ajax 异步嵌套的库,地址在 https://github.com/AlloyTeam/DanceRequest