设计模式13——Bridge设计模式
来源:互联网 发布:澳门mac book pro价格 编辑:程序博客网 时间:2024/05/17 04:49
Bridge桥接设计模式是将一组功能(实现)与另一组使用该功能的其他对象(行为)分离开来,以便达到单一因素变化,然后使用对象调用的方式将这两组关联系起来,将问题的行为和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。 Bridge桥接设计模式结构如下:
还是以画图为例演示Bridge桥接设计模式,例子代码如下:
//行为interface Shape{public void doDraw();}class Circle implements Shape{private Drawing drawpublic Circle(Drawing draw){this.draw = draw;}public void doDraw(){draw.draw();}}class Rectangle implements Shape{private Drawing drawpublic Rectangle(Drawing draw){this.draw = draw;}public void doDraw(){draw.draw();}}//实现interface Drawing{public void draw();}class SolidDrawing implements Drawing{public void draw(){System.out.println(“Drawing solide line…”);}}class DashDrawing implements Drawing{public void draw(){System.out.println(“Drawing dash line…”);}}public class BridgeDemo{public static void main(String[] args){//画一个实线的圆Drawing draw1 = new SolidDrawing();Shape shape1 = new Circle(draw1);shape1.doDraw();//画一个虚线的矩形Drawing draw2 = new DashDrawing();Shape shape2 = new Rectangle(draw2);shape2.doDraw();}}
只从上面的例子代码可能还无法完全理解Bridge桥接设计模式,上面的圆形和矩形是行为,而实线画法和虚线画法则是实现,行为接口Shape通过聚合方式引用实现接口Drawing从而达到了行为和实现的桥接。如果需要增加第三种图形三角形,则不会影响实现部分。如果增加第三种画法折线画法,则不会影响图形行为部分,将行为与实现松耦合分离。当系统有两个可变因素时,即问题行为和问题实现都在变化时,传统实现方式可能组合情况太多造成类爆炸,适合使用桥梁模式。
学习设计模式的人经常分不清Bridge桥接设计模式和Strategy策略设计模式,个人感觉两者简单的区别如下:
(1).Bridge桥接设计模式中不但实现可以变化,问题行为也是可以变化的,且两者的变化是相互独立的,在两个维度都存在变化情况下优先考虑使用桥接模式。
(2).Strategy策略设计模式中,仅仅存在算法实现策略的变化,问题行为是不变的,即仅有一个维度的变化。另外策略模式中考虑的算法层次的变化,是无状态,无数据的。
JDK中桥接模式的应用:
•AWT
•JDBC
- 设计模式13—Bridge设计模式
- 设计模式13——Bridge设计模式
- C++设计模式——Bridge模式
- 学习:java设计模式—Bridge模式
- 设计模式----Bridge模式
- 设计模式:Bridge模式
- 设计模式----Bridge模式
- 设计模式 -- Bridge模式
- 设计模式-Bridge模式
- 【设计模式】bridge模式
- 设计模式----Bridge模式
- 设计模式--------Bridge模式
- 设计模式-Bridge模式
- 设计模式 - Bridge模式
- 设计模式--Bridge 模式
- 设计模式笔记——Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- this用法
- 三角形余弦定理
- 电子邮件书写规则
- Super用法
- 风雨过后 问答网站Answers.com再获融资
- 设计模式13——Bridge设计模式
- DXF图元文件提取与显示(一)
- hdu1978
- 取消IOS对App Icon抛光
- inserter、back_inserter、front_inserter
- IE6解决PNG问题
- 关于DOM SAX StAX JAXP JDOM DOM4J Xerces Crimson
- 获取IOS的当前版本号
- DXF图元文件提取与显示(二)-Line