ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> 设计模式之桥梁模式和策略模式的区别

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

来源:网络整理     时间:2015-12-17     关键词:

本篇文章主要介绍了"设计模式之桥梁模式和策略模式的区别",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下: 桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。 桥梁模式: 策略模式: 在桥接模式中,...

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

桥梁模式:
<strong>设计模式</strong>之桥梁模式和策略模式的区别
策略模式:
<strong>设计模式</strong>之桥梁模式和策略模式的区别
在桥接模式中,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

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了设计模式之桥梁模式和策略模式的区别,包括了方面的内容,希望对软件工程有兴趣的朋友有所帮助。

    本文网址链接:http://www.codes51.com/article/detail_249998.html

    相关图片

    相关文章