Bridge Design Pattern (桥模式)
2015-08-03 00:00
330 查看
摘要: 桥模式的核心思想在于:抽象和行为分离。
桥模式的核心思想在于:抽象和行为分离。
在JDON里面,板桥里人举的例子是咖啡(抽象)与加奶(行为)的关系。原文(http://www.jdon.com/designpatterns/bridge.htm)
意思比较清晰,比如说,按照排列组合关系,大杯咖啡,小杯咖啡,和是否加奶,能够组成四种组合:大杯加奶,小杯加奶,大杯不加奶,小杯不加奶,如果再加一种行为进去,比如加巧克力,或者加方糖什么的,势必会出现更多的组合。如果为每一种组合创造一种对象,会造成对象过多代码混乱的状况。
还有很多例子阐述类似的问题,比如两类人(抽象)与行为的关系,男人穿衣服,女人穿衣服,男人戴帽子,女人戴帽子,诸多的例子,都是在说明桥模式的应用场景。
桥模式的核心思想正是在这里:将抽象与行为分离开,以排列组合的方式降低类型的个数,也让代码更为清晰,具备更好的维护性。
代码如下:
运行结果如下:
桥模式的核心思想在于:抽象和行为分离。
在JDON里面,板桥里人举的例子是咖啡(抽象)与加奶(行为)的关系。原文(http://www.jdon.com/designpatterns/bridge.htm)
意思比较清晰,比如说,按照排列组合关系,大杯咖啡,小杯咖啡,和是否加奶,能够组成四种组合:大杯加奶,小杯加奶,大杯不加奶,小杯不加奶,如果再加一种行为进去,比如加巧克力,或者加方糖什么的,势必会出现更多的组合。如果为每一种组合创造一种对象,会造成对象过多代码混乱的状况。
还有很多例子阐述类似的问题,比如两类人(抽象)与行为的关系,男人穿衣服,女人穿衣服,男人戴帽子,女人戴帽子,诸多的例子,都是在说明桥模式的应用场景。
桥模式的核心思想正是在这里:将抽象与行为分离开,以排列组合的方式降低类型的个数,也让代码更为清晰,具备更好的维护性。
代码如下:
package dp.birdge; /* * 抽象:笔 */ public abstract class Pen { protected Color color; public void draw() { color.draw(); } }
package dp.birdge; public class LongPen extends Pen { public LongPen(Color color) { this.color = color; } public void draw() { System.out.print("Use long pen >> "); super.draw(); } }
package dp.birdge; public class ShortPen extends Pen { public ShortPen(Color color) { this.color = color; } public void draw() { System.out.print("Use short pen >> "); super.draw(); } }
package dp.birdge; public abstract class Color { protected String color; /* * 行为 */ public void draw() { System.out.println("Draw " + this.color); } }
package dp.birdge; public class DrawGreen extends Color { public DrawGreen() { this.color = "green"; } }
package dp.birdge; public class DrawRed extends Color { public DrawRed() { this.color = "red"; } }
package dp.birdge; public class Main { public static void main(String ares[]) { Color green = new DrawGreen(); Color red = new DrawRed(); Pen longGreenPen = new LongPen(green); Pen longRedPen = new LongPen(red); Pen shortGreenPen = new ShortPen(green); Pen shortRedPen = new ShortPen(red); longGreenPen.draw(); longRedPen.draw(); shortGreenPen.draw(); shortRedPen.draw(); } }
运行结果如下:
Use long pen >> Draw green Use long pen >> Draw red Use short pen >> Draw green Use short pen >> Draw red
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统