转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40008711

桥接模式(Bridge): 把事物和其详细实现分开(抽象化与实现化解耦),使他们能够各自独立的变化。如果你的电脑是双系统(WinXP、Win7)。并且都安装了mysql、oracle、sqlserver、DB2这4种数据库,那么你有2*4种选择去连接数据库。按寻常的写法。咱要写2*4个类。可是使用了桥接模式,你仅仅需写2+4个类,能够看出桥接模式事实上就是一种将N*M转化成N+M组合的思想。

一、uml建模:

二、代码实现

/**
* 桥接模式(Bridge): 把事物和其详细实现分开(抽象化与实现化解耦),使他们能够各自独立的变化。
*
* 如果你的电脑是双系统(WinXP、Win7)。并且都安装了mysql、oracle、sqlserver、DB2这4种数据库
*
* 那么你有2*4种选择去连接数据库。 按寻常的写法。咱要写2*4个类,可是使用了桥接模式,你仅仅需写2+4个类
*
* 能够看出桥接模式事实上就是一种将N*M转化成N+M组合的思想。 */
interface Driver {
public void method();
} class MysqlDriver implements Driver { @Override
public void method() {
System.out.println("use mysql driver to connection db...\n");
}
} class OracleDriver implements Driver { @Override
public void method() {
System.out.println("use oracle driver to connection db...\n");
}
} /**
* 这里你还能够写SqlserverDriver、DB2Driver...
*/ abstract class Computer {
public abstract void connection(Driver driver);
} class WinXP extends Computer {
@Override
public void connection(Driver driver) {
System.out.println("WinXP Computer");
driver.method();
}
} class Win7 extends Computer {
@Override
public void connection(Driver driver) {
System.out.println("Win7 Computer");
driver.method();
}
} /**
* client測试类
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
/**
* 第一种组合:winXP使用mysql驱动连接数据库
*/
Computer winxp = new WinXP();
winxp.connection(new MysqlDriver());
/**
* 另外一种组合:win7使用mysql驱动连接数据库
*/
Computer win7 = new Win7();
win7.connection(new MysqlDriver());
/**
* 第三种组合:winXP使用oracle驱动连接数据库
*/
Computer cwinxp = new WinXP();
cwinxp.connection(new OracleDriver());
/**
* 第四种组合:winXP使用oracle驱动连接数据库
*/
Computer cwin7 = new Win7();
cwin7.connection(new OracleDriver()); }
}

三、总结

桥接的核心思想是:将抽象化与实现化解耦,使得二者能够独立变化。

Java设计模式菜鸟系列(十七)桥接模式建模与实现的更多相关文章

  1. Java设计模式菜鸟系列(一)策略模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml ...

  2. Java设计模式菜鸟系列(九)外观模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...

  3. Java设计模式菜鸟系列(七)命令模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39804057 命令模式(Command):将"请求"(命令/口令)封装 ...

  4. Java设计模式菜鸟系列(十)模板方法模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的 ...

  5. Java设计模式之四 ----- 适配器模式和桥接模式

    前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式.本篇则来学习下结构型模式的适配器模式和桥接模式. 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型 ...

  6. Java设计模式菜鸟系列(十四)代理模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些 ...

  7. Java设计模式菜鸟系列(十三)建模和实现状态模式

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像 ...

  8. Java设计模式菜鸟系列(十五)建造者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...

  9. Java设计模式菜鸟系列(二十二)中介者模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与 ...

随机推荐

  1. Linux 基础——常用的Linux网络命令

    一.学Linux网络命令有什么好处 网络的出现,我们的生活更方便了,处理事情的效率也越来越高,也可以看到全世界文化的差异.同时我们接受新事物的信息越来越来强,新事物的信息也越来越来多.网络对于我们尔等 ...

  2. 这是我在word 2010上发布的第一篇文章

    1.设置word 2010,添加cnblogs帐户 配置参考链接 其中URL地址为: http://rpc.cnblogs.com/metaweblog/fariver,在cnblogs配置的最下方可 ...

  3. MVC – 4.mvc初体验(2)

    5.显示学员列表 效果 数据表 5.1 首先,在文件夹Models新建一个新建项(W),选择ADO.NET 实体数据模型 (SingleTest.edmx) 5.2 建一个控制器,StudentsCo ...

  4. Hadoop案例(四)倒排索引(多job串联)与全局计数器

    一. 倒排索引(多job串联) 1. 需求分析 有大量的文本(文档.网页),需要建立搜索索引 xyg pingping xyg ss xyg ss a.txt xyg pingping xyg pin ...

  5. js求区间随机数

    function rnd(n, m){ var random = Math.round(Math.random()*(m-n)+n); return random; }

  6. volatile 的一个经典例子

    volatile 关键字的两层语义 一旦一个共享变量(类的成员变量.类的静态成员变量)被 volatile 修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...

  7. Java8所有的包介绍(由英文文档翻译而来)

    转载: Java8所有的包介绍(由英文文档翻译而来)

  8. mongoDB学习第二天之常用方法

    mongoDB LIMIT 和 SKIP 方法 db.colName.find().limit(num)  # limit 方法接收一个数字参数,该参数指定读取的记录条数 (db.colName.fi ...

  9. 分布式锁的理解,java自带的锁为什么会失效

    前段时间在发送短信的代码块上通过网上找的工具类基于Redis实现了分布式锁的功能 对应的链接https://www.cnblogs.com/c-h-y/p/9391602.html 周末想细细看一下. ...

  10. 利用gmpy2破解rsa

    gmpy2的相关文档: https://gmpy2.readthedocs.io/en/latest/ ================ 题目: 来自实验吧的rsarsa:http://www.shi ...