浅谈桥梁模式实现JDBC

在谈这个问题的时候,我们有必要先去了解一下什么是桥梁模式。
首先我们可以去理解一下桥梁模式的用意:即将抽象化(Abstraction)与实现(Implementation)脱耦,使得二者可以独立的变化。请注意以上用意中有三个关键词:抽象化、实现和脱耦。
(1)抽象化
存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同是实体当做同样的实体来对待。
(2)实现
即针对抽象化给出的具体实现。
(3)脱耦
耦合是指两个实体行为的某种强关联,如果将他们的强关联去掉,就被称为耦合的解脱,或者称为脱耦。脱耦是指将抽象化和实现化之间的耦合解脱开,或者将他们之间的强关联换成弱关联。


        通过以上内容,我们初步了解了设计模式中的桥梁模式。那么在Java应用中,对于桥梁模式有一个非常典型的例子,即就是应用程序使用JDBC驱动程序进行开发的方式。

    String sql = "具体操作的sql语句";
    //装载驱动
    Class.froName("驱动的名字");
    //创建连接
    Connection conn = DriverManager.getConnecttion("URL","user","password");
    //创建statement或者preparedStatement
    PreparedStatement ps = con.prepareStatement(sql);
    //执行sql,如果是查询,再获取ResultSet
    ResultSet rs = ps.executeQuery();
    //循环从ResultSet中把值取出来,封装到数据对象中去
    while(rs.next()){
        String uuid = rs.getString("uuid");
        int age = rs.getInt(2);
    }
    //关闭
    rs.close();
    ps.close();
    con.close();

    从上面的示例中,我们写的应用程序,是面向JDBC的API在开发,这些接口就相当于桥梁模式中抽象部分的接口。
    然后JDBC的驱动程序实现JDBC的API,驱动程序就相当于桥梁模式中的具体实现部分,而不同的数据库,由于数据库实现不一样,可执行的SQL也不完全一样,因此对于JDBC驱动的实现也是不一样的,也就是不同的数据库会有不同的驱动实现。
    此时,我们已经有了抽象部分——JDBC的API,有了具体实现部分——驱动程序。那么他们如何连接起来呢?
    很明显,就是通过DriverManager来把他们桥接起来,从某个侧面来看,DriverManager这里起到了类似于简单工厂的功能,给予JDBC的应用程序需要使用JDBC的API,如何得到呢?就通过DriverManager来获取相应的对象。
    ![](http://i2.51cto.com/images/blog/201807/04/7a78e4328241beb987083f54fc0a3c40.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

    从以上的图可以看出,基于JDBC的应用程序使用JDBC的API,相当于是对数据库操作的抽象的扩展,算作是桥梁模式的抽象部分;而具体的接口实现是由驱动来完成的,驱动这把自然就相当于桥梁模式的实现部分了,而桥接的方式,不再让抽象部分持有实现部分,而是采用了类似工厂的做法,通过DriverManager来把抽象部分和实现部分对接起来,从而实现抽象部分和实现部分解耦。

原文地址:http://blog.51cto.com/13853226/2136339

时间: 2024-08-29 16:53:33

浅谈桥梁模式实现JDBC的相关文章

浅谈三层模式

总觉的对三层的理解很肤浅,这几天看了相关的资料,无非谈的就是概括和基本组建附加个小例子!看完了,感觉说的大同小异,自己的理解好像也没什么多大变化,只不过加深了点罢了.不过想想有几天在这方面的思考,还是总结一下吧! 你去饭店吃饭,就遇见了三层,咱们唠唠吃饭这事! 服务员的作用就是给你上菜,收集你的信息,比如来个鱼香肉丝,或是几瓶啤酒,烤串什么的!总之你的一切请求都只是面向服务员的!至于厨师是男的,女的,负责给厨师买材料的采购员,你是没必要知道的.一切为了顾客,就是服务员的宗旨!等哪天这个服务员辞职

浅谈工厂模式

一个简单的计算器例子来描述工厂模式 Operator公共接口 package com.iss.factory; public interface Operator { public int getResult(int x, int y); } Add.java package com.iss.factory; public class Add implements Operator{ @Override public int getResult(int x, int y) { // TODO A

Android开发:浅谈MVP模式应用与内存泄漏

最近博主开始在项目中实践MVP模式,却意外发现内存泄漏比较严重,但却很少人谈到这个问题,促使了本文的发布,本文假设读者已了解MVP架构. 本文原创作者:xiong_it,链接:http://blog.csdn.net/xiong_it MVP简介 M-Modle,数据,逻辑操作层,数据获取,数据持久化保存.比如网络操作,数据库操作 V-View,界面展示层,Android中的具体体现为Activity,Fragment P-Presenter,中介者,连接Modle,View层,同时持有modl

浅谈开发模式及架构发展

一.传统开发模式 传统的开发模式基本一般是重服务端的开发方式,大部分工作都在服务端执行,然后返回到客户端(通常是HTML).以Asp.net MVC为例,如下图: #1 根据请求的路由定位到对应的Controller的对应的Action. #2 执行相关逻辑,得到结果Model(也可能没有Model,如直接返回View). #3 定位并加载对应的View(也可能没有View,如返回TextResult,JsonResult等). #4 在服务端通过Razor引擎把Model和View绑定起来生成

iOS:个人浅谈工厂模式

一.什么是工厂方法? 正式的解释是:在基类中定义创建对象的一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟到子类中进行.工厂方法要解决的问题是对象的创建时机,它提供了一种扩展的策略,很好地符合了开放封闭原则.工厂方法也叫做虚构造器(Virtual Constructor). 个人的拙见是:通过工厂方法创建工厂对象,然后在工厂类中定义创建基类的子类对象的方法并通过外部传入的条件判断去创建哪一个子类对象,不过由于OC是运行时语言,所以工厂类虽然提供了创建子类对象的方法,但是在编译时期并

浅谈MVC模式

1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,它对我的启发特别大.我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作. 下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路. 2. MVC是三个单词的首字母缩写,它们是Model(模型).View(视图)和Controller(控制). 这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层.

浅谈JavaEE中的JDBC模板类的封装实现以及合理的建立项目包结构(一)

从今天开始我们一起来聊下有关,javaEE开发中的一些知识,JavaEE的开发用于企业级的开发,但是现在企业中一般也不会使用JDBC开发,大部分都是使用自己公司开发的一套的框架,但是这些框架的架构一般也是会模仿着有名JavaEE开源三大开发框架SSH(Struts2+Spring+Hibernate)或者现在也很流行的SSM开发框架(Spring+SpringMVC+MyBatis) 来进行深度定制以便于适合自己企业的实际开发需求.有的人曾说既然去公司又是重新学习一套框架,还有必要学习开源的三大

Swift语言精要 - 浅谈代理模式(Delegate)

在iOS编程中,我们经常谈到代理代理,也就是delegate,那么什么是代理呢? 我们来看一下cocoa对它的描述: Delegation is Cocoa’s term for passing off some responsibilities of an object to another 顾名思义: 代理是把职责从一个对象传到另一个对象. 其实,如果编写过Java或者C#程序的朋友应该知道,我们在设计的时候经常使用到接口和组合,道理是一样的. 看一下下面的代码: 首先,我们定义一个协议 p

浅谈原型模式

近期菜鸟D在看<大话设计模式>,看到原型模式,有一点自己的想法,所以就记下来. 老规矩,解释定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建.                          ——来自百度 由于感觉