首页 > 代码库 > Java设计模式菜鸟系列(十七)桥接模式建模与实现
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(); } } /** * 客户端测试类 * * @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设计模式菜鸟系列(十七)桥接模式建模与实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。