快速业务通道

从重构的角度学习bridge设计模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
ase")){ .......................... .......................... (作者注:此处省略从Sybase读取,约300字) }    } } }

从重构的角度学习bridge设计模式(2)

时间:2010-12-13

如果你认为这写的比较弱智,应该进行使用函数,但是你也会大量使用if else。

于是我们进行重构,首先我们学习过DAO模式,就是把数据读取进行分里,我们定义一个共同的接口,它负责数据库的操作,然后根据不同的数据库进行实现,在我们的查询操作中,使用接口,进行操作,这样就可以不用考虑具体的实现,我们只管实现过程。

查询共同接口:

public interface searchDB{ public Vector searchFromDB(String SQL) } Oracle数据库的查询实现 public class searchDBOracleImpl{ public Vector searchFromDB(String SQL){ //从总部数据库读取,数据库为Oracle String connect_string ="jdbc:oracle:thin:hr/hr@localhost:1521:HRDB"; DriverManager.registerDriver (new oracle.jdbc.OracleDriver());    ResultSet rset = stmt.executeQuery (SQL); ............................. ............................    } } Sybase数据库的查询实现 public class searchDBSysbaseImpl{ public Vector searchFromDB(String SQL){ //从分公司数据库读取,数据库为Sysbase String connect_string ="jdbc:sybase:Tds:cai/cai@192.168.1.12:1521:FIN"; DriverManager.registerDriver (new com.sybase.jdbc.SybDriver()); ResultSet rset = stmt.executeQuery (SQL); ............................. ............................    } }

这样在我们的查询中就可以使用接口searchDB,但是创建有是一个问题,因为我们不能静态的确定,查询的数据库类型,必须动态确定,于是我们又想到使用简单工厂方法,来分别创建这里的具体实现,根据类别,创建

public class searchFactory{ public static searchDB createSearch(int DBType){ if(DBType.equal("oracle")){ return searchDBOracleImpl(); }else if(DBType.equal("sybase")){ return searchDBSysbaseImpl(); } } } 于是我们的查询代码可以改变为这样了; public class SearchAction(){    public Vector searchData(string ActionType,String DbType){ String SQL=""; if(ActionType.equal("查找客户信息")){ //如果是查询客户信息,拼SQL语句从客户表中读取数据 SQL="select * from Customer " searchDB obj=searchFactory.createSearch(DbType); return obj.searchFromDB(SQL);    }else if(ActionType.equal("查找帐户信息")){ //如果是查询帐户信息,拼接SQL语句从帐户表中读取数据 SQL="select * from Account " searchDB obj=searchFactory.createSearch(DbType); return obj.searchFromDB(SQL); } } }

从重构的角度学习bridge设计模式(3)

时间:2010-12-13

是不是简单一些,如果增加一个新的数据库,对我们只需增加一个新的数据库实现便可,老的代码,不需改变,这样便实现开-闭原则(Open-closed原则),在我们的查询查询中使用的是接口,这就是设计模式的原则,针对接口进行编程,并且使用聚合,而不是直接的继承大家,可以考虑使用继承来完成该工作怎样实现。上面是把实现进行分离,实现可以动态变化!

我们把查询的操作的具体数据库实现进行了分离,增强了灵活性,但是我们的查询。仍然使用了if else这样仍然不易进行扩展,于是我们进行抽象一个查询操作的过程,把它分成几个具体步骤,创建SQL语句,发送到数据库,执行查询,返回结果。

它们虽然是不同的查

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号