Java设计模式菜鸟系列(十七)桥接模式建模与实现
转载请注明出处: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设计模式菜鸟系列(十七)桥接模式建模与实现的更多相关文章
- Java设计模式菜鸟系列(一)策略模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml ...
- Java设计模式菜鸟系列(九)外观模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...
- Java设计模式菜鸟系列(七)命令模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39804057 命令模式(Command):将"请求"(命令/口令)封装 ...
- Java设计模式菜鸟系列(十)模板方法模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的 ...
- Java设计模式之四 ----- 适配器模式和桥接模式
前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式.本篇则来学习下结构型模式的适配器模式和桥接模式. 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型 ...
- Java设计模式菜鸟系列(十四)代理模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些 ...
- Java设计模式菜鸟系列(十三)建模和实现状态模式
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像 ...
- Java设计模式菜鸟系列(十五)建造者模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...
- Java设计模式菜鸟系列(二十二)中介者模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与 ...
随机推荐
- hive学习(八)hive优化
Hive 优化 1.核心思想: 把Hive SQL 当做Mapreduce程序去优化 以下SQL不会转为Mapreduce来执行 select仅查询本表字段 where仅对本表字段做条件过滤 Ex ...
- hdu 5833(欧拉路)
The Best Path Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- win10家庭版和专业版远程桌面出现身份验证错误, 要求的函数不受支持。解决办法【亲测有效】
1.解决 win10家庭中文版 远程连接:出现身份验证错误 要求的函数不受支持 Windows 5.10日更新后,远程连接出现失败. 提示: 出现身份验证错误.要求的函数不受支持 这可能是由于 Cre ...
- bzoj 1483 链表 + 启发式合并
思路:将颜色相同的建成一个链表, 变颜色的时候进行链表的启发式合并.. 因为需要将小的接到大的上边,所以要用个f数组. #include<bits/stdc++.h> #define LL ...
- 洛谷P1528 切蛋糕 [搜索,二分答案]
题目传送门 切蛋糕 题目描述 Facer今天买了n块蛋糕,不料被信息组中球球等好吃懒做的家伙发现了,没办法,只好浪费一点来填他们的嘴巴.他答应给每个人留一口,然后量了量每个人口的大小.Facer有把刀 ...
- Mybatis 源码分析之一二级缓存
一级缓存 其实关于 Mybatis 的一级缓存是比较抽象的,并没有什么特别的配置,都是在代码中体现出来的. 当调用 Configuration 的 newExecutor 方法来创建 executor ...
- python 学习笔记 - Queue & Pipes,进程间通讯
上面写了Python如何创建多个进程,但是前面文章中创建的进程都是哑巴和聋子,自己顾自己执行,不会相互交流.那么如何让进程间相互说说话呢?Python为我们提供了一个函数multiprocessing ...
- 腾讯后台研发暑期实习offer经历
昨晚看到腾讯校招的微信状态,一颗心终于落下来了,终于可以去梦寐以求的鹅厂工作了.想想这一个多月以来,心情就像过山车一样,此起彼伏,一会充满希望,一会又跌入谷底. 三月份的时候,听说腾讯可以内推了,我内 ...
- SPOJ375 Query on a tree 【倍增,在线】
题目链接[http://www.spoj.com/problems/QTREE/] 题意:给出一个包含N(N<=10000)节点的无根树,有多次询问,询问的方式有两种1.DIST a b 求a ...
- [ZROI 9.16模拟赛] Tutorial
Link: 传送门 A: 套路题结果想了好久…… 排序二叉树的性质就是中序遍历单调递增 于是只考虑当前树的中序遍历的序列即可,与树的形态无关 将序列改成严格单调增想到最大化不变的数,但直接LIS求的是 ...