设计模式之桥梁模式和策略模式的差别

桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。下面是它们的UML结构图。

桥梁模式:
这里写图片描写叙述
策略模式:
这里写图片描写叙述
在桥接模式中,Abstraction通过聚合的方式引用Implementor。

举一个样例:

策略模式:我要画圆。要实心圆,我能够用solidPen来配置。画虚线圆能够用dashedPen来配置。

这是strategy模式。


桥接模式:相同是画圆,我是在windows下来画实心圆。就用windowPen+solidPen来配置。在unix下画实心圆就用unixPen+solidPen来配置。假设要再windows下画虚线圆。就用windowsPen+dashedPen来配置,要在unix下画虚线圆,就用unixPen+dashedPen来配置。

画圆方法中,策略仅仅是考虑算法的替换,而桥接考虑的则是不同平台下须要调用不同的工具,接口仅仅是定义一个方法。而详细实现则由详细实现类完毕。

差别:
桥接模式:不仅Implementor具有变化(ConcreteImplementor),并且Abstraction也能够发生变化(RefinedAbstraction),并且两者的变化是全然独立的,RefinedAbstraction与ConcreateImplementor之间松散耦合,它们仅仅通过Abstraction与Implementor之间的关系联系起来。强调Implementor接口仅提供基本操作。而Abstraction则基于这些基本操作定义更高层次的操作。
策略模式:并不考虑Context的变化。仅仅有算法的可替代性。强调Strategy抽象接口的提供的是一种算法。通常是无状态、无数据的,Context简单调用这些算法完毕其操作。

所以相对策略模式,桥接模式要表达的内容要很多其它。结构也更加复杂。
桥接模式表达的主要意义事实上是接口隔离的原则。即把本质上并不内聚的两种体系差别开来,使得它们能够松散的组合。而策略在解耦上还仅仅是某一个算法的层次。没有到体系这一层次。

从结构图中能够看到。策略模式的结构是包容在桥接模式结构中的,Abstraction与Implementor之间就能够觉得是策略模式。可是桥接模式一般Implementor将提供一系列的成体系的操作。并且Implementor是具有状态和数据的静态结构。

并且桥接模式Abstraction也能够独立变化。

參考:http://c610367182.iteye.com/blog/1965668
http://www.blogjava.net/wangle/archive/2007/04/25/113545.html

转载于:https://www.cnblogs.com/zhchoutai/p/7233632.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值