• 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... "); } } class OracleDriver implements Driver { @Override public void method() { System.out.println("use oracle driver to connection db... "); } } /** * 这里你还能够写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()); } }


    三、总结

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

  • 相关阅读:
    可视化开发_AppInventor2似乎被抛弃了
    PHP内核学习(一)SAPI
    代码整洁之道(一)理论篇
    Silence.js高效开发移动Web前端类库
    梦游前端,JavaScript兼容性
    20分钟入门正则表达式
    原生Javascript 省市区下拉列表插件
    Tortoise-SVN 出现“unable to connect to a repository at url no element found”解决办法
    PHP实现好友生日邮件提醒
    第一份工作
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5074031.html
Copyright © 2020-2023  润新知