- 浏览: 44949 次
- 性别:
- 来自: 广州
文章分类
最新评论
来源:http://www.blogjava.net/wangle/archive/2007/04/25/113545.html
桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。
在桥接模式中,Abstraction通过聚合的方式引用Implementor。
在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。
从他们的结构图可知,在这两种模式中,都存在一个对象使用聚合的方式引用另一个对象的抽象接口的情况,而且该抽象接口的实现可以有多种并且可以替换。可以说两者在表象上都是调用者与被调用者之间的解耦,以及抽象接口与实现的分离。
那么两者的区别体现在什么地方呢?
1. 首先,在形式上,两者还是有一定区别的,对比两幅结构图,我们可以发现,在桥接模式中不仅Implementor具有变化(ConcreateImplementior),而且Abstraction也可以发生变化(RefinedAbstraction),而且两者的变化是完全独立的,RefinedAbstraction与ConcreateImplementior之间松散耦合,它们仅仅通过Abstraction与Implementor之间的关系联系起来。而在策略模式中,并不考虑Context的变化,只有算法的可替代性。
2. 其次在语意上,桥接模式强调Implementor接口仅提供基本操作,而Abstraction则基于这些基本操作定义更高层次的操作。而策略模式强调Strategy抽象接口的提供的是一种算法,一般是无状态、无数据的,而Context则简单调用这些算法完成其操作。
3. 桥接模式中不仅定义Implementor的接口而且定义Abstraction的接口,Abstraction的接口不仅仅是为了与Implementor通信而存在的,这也反映了结构型模式的特点:通过继承、聚合的方式组合类和对象以形成更大的结构。在策略模式中,Startegy和Context的接口都是两者之间的协作接口,并不涉及到其它的功能接口,所以它是行为模式的一种。行为模式的主要特点就是处理的是对象之间的通信方式,往往是通过引入中介者对象将通信双方解耦,在这里实际上就是将Context与实际的算法提供者解耦。
所以相对策略模式,桥接模式要表达的内容要更多,结构也更加复杂。桥接模式表达的主要意义其实是接口隔离的原则,即把本质上并不内聚的两种体系区别开来,使得它们可以松散的组合,而策略在解耦上还仅仅是某一个算法的层次,没有到体系这一层次。从结构图中可以看到,策略的结构是包容在桥接结构中的,桥接中必然存在着策略模式,Abstraction与Implementor之间就可以认为是策略模式,但是桥接模式一般Implementor将提供一系列的成体系的操作,而且Implementor是具有状态和数据的静态结构。而且桥接模式Abstraction也可以独立变化。
发表评论
-
职场观察:高薪需要什么?
2014-04-01 21:07 362http://xjsunjie.blog.51cto.com ... -
毕业五年来的回顾
2014-04-01 20:59 330http://luogangan.blog.51cto.co ... -
深处跳槽热浪中,跳与不跳该如何抉择?
2013-03-20 13:02 646深处跳槽热浪中,跳与不跳该如何抉择? 跳槽有哪些技巧和注意事项 ... -
面试 需要注意三种公司
2013-03-20 12:55 595来源:http://cuisuqiang.iteye.com ... -
面试 需要警惕三个问题
2013-03-20 12:54 554来源:http://cuisuqiang.ite ... -
离职 需要注意三个问题
2013-03-20 12:53 593来源:http://cuisuqiang.ite ... -
最具争议的10个编程观点
2013-02-12 22:21 656你认为最具争议的编程观点是什么?C#专家Jon Skeet曾 ... -
Java枚举的七种常见用法
2013-01-06 12:19 648http://blog.jobbole.com/31597/ ... -
设计高可用和高负载的网站系统
2012-12-10 12:57 565随着网站的运营,用户 ... -
大型互联网网站架构心得
2012-12-10 12:52 631大型互联网网站架构心 ... -
世界最大的PHP站点 Facebook后台技术探秘
2012-12-10 12:49 710在今年举行的Facebook F8开发者大会上,51CTO带您 ... -
为程序员量身定制的12个目标
2012-11-18 15:44 647http://justjavac.iteye.com/b ... -
FusionCharts:Div层被Flash遮住
2012-10-20 17:34 644http://www.zihou.me/html/201 ... -
FusionCharts V3图表导出图片和PDF属性说明
2012-10-20 17:29 793http://www.cnblogs.com/ATree/ar ... -
FusionCharts的中文乱码问题
2012-10-20 17:20 675原文地址:http://wangyaobeijing.b ... -
12 个有效的提高编程技能的方法
2012-10-14 19:17 531来源于:http://www.oschina.net/news ... -
JAVA MVC框架性能比较
2012-09-09 17:28 747来源:http://www.blogjava.net/p ... -
低级别工具 —— 锁定和原子
2012-09-09 17:26 751Lock Java 语言内置了锁定工具 —— sync ... -
Synchronizer 类
2012-09-09 17:26 708Synchronizer 类 Synchroni ... -
一些技术网站
2012-09-02 14:36 621第一个:http://www.iteye.com(www.it ...
相关推荐
1. **目的不同**:桥接模式是为了分离抽象与实现,让它们可以独立变化,而策略模式关注的是算法或行为的选择。 2. **结构差异**:桥接模式包含抽象、实现和桥接角色,实现部分和抽象部分通过桥接角色关联;策略模式...
桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在软件工程中,这种分离有助于降低复杂性,提高代码的可维护性和可扩展性。桥接模式的核心...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,特别是当需要为同一抽象提供多种实现或者需要独立地改变它们时。 ...
桥接模式(Bridge Pattern)是面向对象设计中的一种结构型模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 ...
桥接模式是一种设计模式,它将抽象部分与实现部分分离,使得它们可以独立进行变化。在C++中,桥接模式的应用有助于降低系统的耦合度,提高代码的可扩展性和可维护性。以下是对桥接模式及其C++实现的详细解释。 首先...
在桥接模式虚拟机网络配置中,虚拟机被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的 VMnet0 网卡与主机以太网连接,虚拟机间的虚拟网络为 VMnet0,担当虚拟交换机的是 VMware Workstation 6。...
"ADSL 桥接模式和路由模式的区别" 在 ADSL 宽带接入方式中,桥接模式和路由模式是两种常见的工作模式。_bridge 模式是 ADSL ROUTER 的默认工作模式,主要用于单台电脑的接入,需要代理服务器或网关设备将局域网中的...
桥接模式(Bridge Pattern)是设计模式中的一种结构型模式,它主要解决的是在软件设计中,当抽象和实现之间存在紧密耦合时,如何使这两者能够独立地变化。这种模式通过引入一个抽象层来分离接口和实现,使得它们可以...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件设计中扮演着重要的角色,尤其是在面对需求频繁变动或系统需要支持多平台、多设备的情况下。 首先,我们要理解...
桥接模式是设计模式中的一种结构型模式,它旨在将抽象部分与实现部分解耦,使得它们可以独立地变化。这种模式将抽象类和它的实现类进行分离,通过一个抽象接口来连接它们,使得两者可以独立发展,增加了系统的灵活性...
桥接模式(Bridge Pattern)是设计模式中结构型模式的一种,它的主要目的是将抽象部分与实现部分解耦,使得它们可以独立地进行变化。在Java编程中,这种模式的应用可以帮助我们构建更加灵活、可扩展的代码结构。 ...
在桥接模式中,抽象类(Abstraction)不直接引用具体实现(Implementation),而是通过一个桥接类(Bridge)来引用,这样抽象部分与实现部分可以独立变化,提供了更大的灵活性。 首先,我们来看一下桥接模式的基本...
桥接模式在Android开发中提供了一种高效的设计策略,有助于降低代码的复杂性,提高可维护性和可扩展性。通过`ImplementorDemo`的例子,我们可以看到如何使用桥接模式来分离动画效果的抽象和实现,使其能独立变化,...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛应用于处理组件之间的耦合问题,使得系统具有更好的可扩展性和灵活性。 桥接模式的主要组成部分...
"Vmware Ubuntu虚拟机桥接模式的使能" Vmware Ubuntu虚拟机桥接模式的使能是指在Vmware Workstation虚拟机中,使用桥接模式将虚拟机的网络连接到宿主机的物理网络上,从而使虚拟机可以直接访问外部网络和宿主机网络...
1. 定义抽象接口或抽象类(Abstract Class):这是桥接模式的抽象部分,通常包含对实现部分的引用,并定义了一些与实现相关的操作。 2. 创建实现接口或实现类(Concrete Implementors):这些类实现了抽象接口或...
桥接模式是一种设计模式,属于结构型模式,其主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。这种模式通过引入一个抽象化角色来实现抽象部分与实现部分的解耦,使得这两部分可以独立扩展。在这个...
桥接模式是设计模式中的一种结构型模式,其主要目的是为了分离抽象部分和实现部分,以便两者能够独立地进行变化。这种模式的核心理念是通过引入一个抽象层来封装多种可能的实现,使得抽象和实现之间形成一种“桥接”...
VMware 15虚拟机桥接模式无法上网问题 步骤 1:在设置中找到 网络和internet—>>更改适配器选项—–>>以太网 查看 共享网络给虚拟机(有些电脑不用) 步骤2:查看VMware虚拟网络编辑器的VMnet0桥接模式设置 ...
图片浏览器的接口设计-桥接模式的运用 解决问题: 一个图像格式有两个基本的方面,一是结构,二是表象。其结构决定了图像是怎样存储的,而其表象决定了图像是怎样显示在屏幕上的。对于一个图像格式(BMP、JPG等)来...