桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。
2012-04-19 21:27
381 查看
桥接模式最常用在事件监控上,先看一段代码:
上述代码,有个问题就是getBeerById必须要有浏览器的上下文才能使用,因为其内部使用了this.id这个属性,如果没用上下文,那就歇菜了。所以说一般稍微有经验的程序员都会将程序改造成如下形式:
实用多了,对吧?首先ID可以随意传入,而且还提供了一个callback函数用于自定义处理函数。但是这个和桥接有什么关系呢?这就是下段代码所要体现的了:
这里的getBeerByIdBridge就是我们定义的桥,用于将抽象的click事件和getBeerById连接起来,同时将事件源的ID,以及自定义的call函数(console.log输出)作为参数传入到getBeerById函数里。
这个例子看起来有些简单,我们再来一个复杂点的实战例子。
876f
addEvent(element, 'click', getBeerById); function getBeerById(e) { var id = this.id; asyncRequest('GET', 'beer.uri?id=' + id, function(resp) { // Callback response. console.log('Requested Beer: ' + resp.responseText); }); }
上述代码,有个问题就是getBeerById必须要有浏览器的上下文才能使用,因为其内部使用了this.id这个属性,如果没用上下文,那就歇菜了。所以说一般稍微有经验的程序员都会将程序改造成如下形式:
function getBeerById(id, callback) { // 通过ID发送请求,然后返回数据 asyncRequest('GET', 'beer.uri?id=' + id, function(resp) { // callback response callback(resp.responseText); }); }
实用多了,对吧?首先ID可以随意传入,而且还提供了一个callback函数用于自定义处理函数。但是这个和桥接有什么关系呢?这就是下段代码所要体现的了:
addEvent(element, 'click', getBeerByIdBridge); function getBeerByIdBridge (e) { getBeerById(this.id, function(beer) { console.log('Requested Beer: '+beer); }); }
这里的getBeerByIdBridge就是我们定义的桥,用于将抽象的click事件和getBeerById连接起来,同时将事件源的ID,以及自定义的call函数(console.log输出)作为参数传入到getBeerById函数里。
这个例子看起来有些简单,我们再来一个复杂点的实战例子。
876f
相关文章推荐
- 桥接模式(Bridge)-将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 桥接模式--将抽象和实现变化分离
- Bridge 把一个抽象与其抽象操作的实现进行分离,这样,抽象与其抽象操作的实现可以独立进行改变
- 桥接模式:将抽象部分与它的实现部分分离
- 设计模式拾荒之桥接模式( Bridge Pattern ): 可以变化的抽象类与接口
- 桥接模式-抽象与实现的分离
- 18、桥接模式—抽象与实现分离。桥接模式和策略模式对比,桥接模式的个人完善
- 手机软件统一 X 桥接模式 X 抽象与实现分离
- 桥接(Bridge)模式----将类的功能层次结构与实现层次结构分离
- 菜鸟版JAVA设计模式-从抽象与实现说桥接模式
- JAVA设计模式-从抽象与实现说桥接模式
- 处理多维度变化--桥接模式Bridge
- Java 实现桥接(Bridge)模式
- Java 实现桥接(Bridge)模式
- 设计模式1:找出应用中可能需要变化之处,把它们独立出来。
- 虚拟机桥接模式下虚拟机和主机处于对等地位,有独立的IP,它可以访问局域网内任何一台机器
- 策略模式(Strategy)-定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
- 多维抽象与分离——Bridge模式学习心得
- 从头认识设计模式-策略模式-04-引入设计原则:分离变化与不变的部分
- vmware虚拟机设计bridge的网络桥接模式无法ping通宿主机但是可以ping通局域网内的其他机器