- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
适于多种数据库访问的抽象工厂模式研究.doc
适于多种数据库访问的抽象工厂模式研究
摘 要: 本文将抽象工厂模式应用到WEB程序的数据库访问中,体现了抽象工厂模式高度封装性的优势,最大限度的实现了代码复用。
关键词:抽象工厂模式 WEB程序 数据访问层
多数WEB程序离不开数据库的访问,如何使软件设计适用于多种数据库的需求,以提高程序的扩展性和代码复用率,这是程序设计人员必然面临的问题。使用抽象工厂模式可以很好地解决该问题。
一、抽象工厂模式概述
抽象工厂模式是GoF的《Design Patterns》一书描述的创建型模式之一,是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式向具体产品提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象[1]。
二、抽象工厂模式在WEB程序中的应用设计
为了使WEB程序适用于多种数据库,诸如SQL Server、ACCESS等,在数据访问层设计中使用抽象工厂模式。首先,设计抽象工厂类DataAccessFactory,该类根据用户需求创建具体的数据访问工厂,如:访问SQL Server数据库的SqlData工厂和访问ACCESS数据库的AccessData工厂;其次,由SqlData工厂和AccessData工厂分别创建具体的对象产品。用户在使用时无需关心自己使用的是什么工厂,通过统一的接口可以实现对不同数据库的访问。
(一)设计抽象工厂类DataAccessFactory
在DataAccessFactory类中包括获取数据库连接字符串和数据库类型的信息,并定义创建具体工厂类的方法。
默认数据库类型:public static readonly string ConnDatabaseType =ConfigurationManager.AppSettings[DatabaseType];
数据库类型属性:DatabaseType DatabaseType{get;}
数据库连接对象属性:IDbConnection DbConnection{get;}
创建具体工厂类的方法:
public static DataAccess CreateDataAccess(){
DataAccess dataAccess; // DataAccess是提供数据库访问功能的接口
switch(ConnDatabaseType) {
case(DatabaseType.MSSQLServer):
dataAccess = new SqlDataAccess(pp.ConnectionString);
break;
case (DatabaseType.Oracle):
dataAccess = new OracleDataAccess(pp.ConnectionString);
break;
case (DatabaseType.OleDBSupported
dataAccess = new OleDbDataAccess(pp.ConnectionString);
break;}
return dataAccess; }
其中,DataAccess接口包括访问数据库的方法的定义,如:打开连接操作Open(),关闭连接操作 Close(),执行查询的操作DataSet ExecuteDataset(string commandType ,string commandText)及其重载方法等。
为了实现DataAccess接口中的Open方法和Close方法,定义了抽象类AbstractDataAccess。包括:
Open方法和Close方法的实现:
public void Open(){
if(this.DbConnection.State.Equals(ConnectionState.Closed))
this.DbConnection.Open();}
public void Close(){
if(this.DbConnection.State.Equals(ConnectionState.Open))
this.DbConnection.Close();}
(二)设计具体工厂类SqlData
SqlData类继承AbstractDataAccess,重写属性和操作数据库的方法。
public override DatabaseType DatabaseType{
get{return DatabaseType.MSSQLServer;} }
(三)数据访问层应
文档评论(0)