永发信息网

桥接模式和策略模式的区别

答案:1  悬赏:60  手机版
解决时间 2021-02-09 13:58
桥接模式和策略模式的区别
最佳答案
桥接(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也可以独立变化。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
qq加人是太频繁后面的人就收不到验证消息吗?
天星麻将机超市(丰谷店)在什么地方啊,我要过
星海艺术培训中心(郴州资兴市)地址好找么,我
东直门北大街/民安街(路口)地址在哪,我要去
遇到一个很烦的人 删他微信会不礼貌吗
下列关于物质跨膜运输的叙述,错误的是A. 主
前程无忧学前教育怎么去啊,我要去那办事
后五十九号地址在什么地方,想过去办事
根类药材表面生有的沙粒样须根痕小凹称为A.砂
电脑主板怎么样分别是新是旧?
跪求,成都FM94.0的方言社会的开头语 啥子拜
蓝天湘一培训资兴校区地址在什么地方,我要处
响云天茶业三亚分店我想知道这个在什么地方
rav4刹车油多长时间换
组织将报废许多笔记本电脑,下列哪项数据清理
推荐资讯
北京昌平城区,请朋友吃饭一起玩哪里好?
A1661FCCID:BCG-E3087AIC:579C-E3087A是什么
宁波鲜花市场 情况
女人沉默代表什么
湖南·株洲醴陵华旗汽车销售有限公司地址
vivo x3的hi-fi&smart好不好用并解释一下是什
如何在SAP中创建DO?
自由幻想五行法宝加工和装备加工一样吗
windows7怎么运行cnd
鸿顺百货(宿迁泗洪)地址在哪,我要去那里办事
隘子村在哪里啊,我有事要去这个地方
敖溪镇有什么快递?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?