中介者对象可以让各个对象之间不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。
打个比方,军火买卖双方为了安全起见,找了一个信任的中介来进行交易。买家 A 把钱交给中介 B,然后从中介手中得到军火,卖家 C 把军火卖给中介,然后从中介手中拿回钱。一场交易完毕,A 甚至不知道 C 是一只猴子还是一只猛犸。因为中介的存在,A 也未必一定要买 C 的军火,也可能是 D,E,F。
模式方法是预先定义一组算法,先把算法的不变部分抽象到父类,再将另外一些可变的步骤延迟到子类去实现。听起来有点像工厂模式 ( 非前面说过的简单工厂模式 ).
最大的区别是, 工厂模式的意图是根据子类的实现最终获得一种对象. 而模版方法模式着重于父类对子类的控制.
策略模式的意义是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
一个小例子就能让我们一目了然。
回忆下 jquery 里的 animate 方法.
外观模式 (门面模式),是一种相对简单而又无处不在的模式。外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用。
用一段再简单不过的代码来表示
1 2 3 4 5 6 |
var getName = function(){ return ''svenzeng" } var getSex = function(){ return 'man' } |
代理模式的定义是把对一个对象的访问, 交给另一个代理对象来操作.
举一个例子, 我在追一个 MM 想给她送一束花,但是我因为我性格比较腼腆,所以我托付了 MM 的一个好朋友来送。
这个例子不是非常好, 至少我们没看出代理模式有什么大的用处,因为追 MM 更好的方式是送一台宝马。
去年年前当时正在开发 dev.qplus.com, 有个存储应用分类 id 的 js 文件, 分类 id 的结构最开始设计的比较笨重. 于是我决定重构它. 我把它定义成一个 json 树的形式, 大概是这样:
观察者模式 ( 又叫发布者-订阅者模式 ) 应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的 dom 事件. 也是 js 和 dom 之间实现的一种观察者模式.
1 2 3 4 5 |
div.onclick = function click (){ alert ( ''click' ) } |
简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮。
简单工厂模式在创建 ajax 对象的时候也非常有用.
之前我写了一个处理 ajax 异步嵌套的库,地址在 https://github.com/AlloyTeam/DanceRequest
Copyright © 2011-2021 AlloyTeam. All Rights Reserved. Powered By WordPress
粤ICP备15071938号-2