JAVA开发的23种设计模式之 --- 桥接模式
来源:互联网 发布:伯明翰 知乎 编辑:程序博客网 时间:2024/06/09 20:35
桥接模式
- 概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构.
- 应用场景
- 实现系统可能有多个角度分类,每一种角度都可能变化.
- 解释:桥接模式将继承模式转化成关联关系,他降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量.
- 理解抽象化,实现化,解耦
- 抽象化:将复杂物体的一个或几个共同的特性抽出去而只注意其他特性的行动或过程.在java面向对象中抽象化就是将对象的共同性质抽取出去形成类的过程.
- 实现化:针对抽象化给出的具体实现,它和抽象化是一个互逆的过程,实现化是对抽象化事物的进一步具体化.
- 解耦:解耦是将抽象化和实现化之间的耦合关系解脱开,或者说是将他们之间的强关联改换成弱关联.将两个角色之间的继承关系修改为关联关系.
- 优点
- 分离抽象接口及其实现部分.提高了比继承更好的解决方案.
- 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原来的系统.
- 实现细节对客户不透明,可以隐藏实现细节.
- 缺点
- 桥接模式的引入会增加系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行编程.
代码实现
示例:在开发中可能不止使用一种数据库, 例如Mysql,SqlServer数据库等,现在使用桥接模式创建一个连接数据库的驱动,然后对每一个数据库提供各自的实现.对于使用某一个数据库的时候只需要切换一下就行.
类图
数据库接口
package Bridge;/** * Created by looper on 2017/8/16. */public interface Driver { public void connect();}
Mysql数据库实现类
package Bridge;/** * Created by looper on 2017/8/16. */public class MysqlDriver implements Driver { @Override public void connect() { System.out.println("连接Mysql数据库"); }}
SqlServer数据库实现类
package Bridge;/** * Created by looper on 2017/8/16. */public class SqlServerDriver implements Driver { @Override public void connect() { System.out.println("连接SQLServer数据库"); }}
桥梁类(抽象类)
package Bridge;/** * Created by looper on 2017/8/16. */public abstract class Bridge { private Driver driver; public void connect(){ driver.connect(); } public void setDriver(Driver driverTemp){ this.driver = driverTemp; } public Driver getDriver(){ return this.driver; }}
桥梁类(实现类)
package Bridge;/** * Created by looper on 2017/8/16. */public class MyBridge extends Bridge {}
测试类
package Bridge;/** * Created by looper on 2017/8/16. */public class BridgeTest { public static void main(String[] args) { Bridge mysqlBridge = new MyBridge(); Driver mysqlDriver = new MysqlDriver(); mysqlBridge.setDriver(mysqlDriver); mysqlBridge.connect(); Driver sqlServerDriver = new SqlServerDriver(); mysqlBridge.setDriver(sqlServerDriver); mysqlBridge.connect(); }}
输出:
我将23种设计模式的全部代码上传到CSDN,有用得到的同学 可以去下载.
下载地址 : 点我
阅读全文
1 0
- JAVA开发的23种设计模式之 --- 外观模式
- JAVA开发的23种设计模式之 --- 策略模式
- JAVA开发的23种设计模式之 --- 模板模式
- JAVA开发的23种设计模式之 --- 观察者模式
- JAVA开发的23种设计模式之 --- 命令模式
- JAVA开发的23种设计模式之 --- 备忘录模式
- JAVA开发的23种设计模式之 --- 状态模式
- JAVA开发的23种设计模式之 --- 访问者模式
- JAVA开发的23种设计模式之 --- 桥接模式
- JAVA开发的23种设计模式之 --- 工厂模式 && 抽象工厂模式
- JAVA开发的23种设计模式之 — 装饰器模式 && 代理器模式
- Java开发中的23种设计模式之十:桥接模式(Bridge)
- java开发的23种设计模式
- Java开发的23种设计模式
- JAVA开发的23种设计模式之 --- 单例模式
- JAVA开发的23种设计模式之 --- 建造者模式
- JAVA开发的23种设计模式之 --- 原型模式
- JAVA开发的23种设计模式之 --- 适配器模式
- Myeclipse项目添加spring支持,使包名有提示的方法。
- 军训队列
- adb server is out of date. killing问题
- Linux中fork()函数详解
- Number of Islands问题及解法
- JAVA开发的23种设计模式之 --- 桥接模式
- 使用FileZilla连接时超时,无法连接到服务器
- 正则表达式随笔小记(二)
- java 单列集合总结
- Go语言学习笔记(五)方法
- Linux:命令执行控制&&与||
- R语言-数据库连接与使用
- C++中多次循环输出一个文件内的每行信息
- 线性代数 -- 正交向量与子空间