java设计模式第4弹--桥接模式
来源:互联网 发布:杭州淘宝诈骗案进展 编辑:程序博客网 时间:2024/06/16 11:59
一、桥接模式慨念
将抽象化与实现化脱耦,使得二者可以独立的变化。
二、解决的问题
他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化
三、代码模拟实现
public interface DataSource {public void method();}
public class MySqlSource implements DataSource{@Overridepublic void method() {System.out.println("我是Mysql 数据源");}}
public class OracleSource implements DataSource{@Overridepublic void method() {System.out.println("我是Oracle数据源");}}
public abstract class Bridge {private DataSource dataSource;public void method(){dataSource.method();}public DataSource getDataSource() {return dataSource;}public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;}}
public class MyBridge extends Bridge{public void method(){getDataSource().method();}}
public class BridgeTest {/** * @param args */public static void main(String[] args) {Bridge bridge = new MyBridge();/** * 调用第一个对象 */DataSource oracle = new OracleSource();bridge.setDataSource(oracle);bridge.method();/** * 调用第二个对象 */DataSource mysql = new MySqlSource();bridge.setDataSource(mysql);bridge.method();}}
控制台输出如下:
我是Oracle数据源
我是Mysql 数据源
参考大话设计模式中的心得:
和适配器模式的共同点就是都是让两个东西配合工作
不同点:
适配器模式:改变已有的两个接口,让他们相容
桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。
如果你拿到两个已有模块,想让他们同时工作,那就使用适配器模式,如果你还什么都没有,但是想分开实现,就用桥接模式。
记住:桥接模式是先有桥,才有两端的东西,适配器是先有两边的东西,才有适配器,桥接是在桥好了之后,两边的东西还可以变化。
0 0
- java设计模式第4弹--桥接模式
- java读书笔记-《java设计模式》-第4章 - 外观模式
- java设计模式第1弹---适配器模式
- java 设计模式第2弹--外观/门面模式
- java设计模式第5弹--责任链模式
- java设计模式第6弹--单例模式
- java设计模式第7弹--观察者模式
- java设计模式第8弹--中介者模式
- java设计模式第9弹--代理模式
- java设计模式第10弹--享元模式
- java设计模式第11弹--建造者模式
- java设计模式第12弹--工厂模式
- java设计模式第13弹--原型模式
- java设计模式第14弹--备忘录模式
- java设计模式第15弹--状态模式
- java设计模式第16弹--访问者模式
- Java设计模式-----Bridge桥接模式
- java设计模式-桥接模式
- 正则表达式
- 代码实现自定义键盘工具条
- Android绘制的一些总结onMeasure,onLayout,onDraw
- js中的一些数字处理方法
- UVALive 4288 Cat vs. Dog
- java设计模式第4弹--桥接模式
- sum root to leaf
- Examining the Compilation Process
- hadoop 词频统计&&adoop jar jar包名.jar 包名.主类名 输入路径(文件的目录,不包括文件本身) 输出路径
- IntentService,(Looper,Message,Handler)三者之间的关系,AsyncTask,
- (视频)vivi驱动层代码分析
- 原型模式的浅克隆和深克隆
- Effective C++——条款31(第5章)
- Mac 系统开机启动nginx,php