天天看点

使用反射+抽象工厂的数据访问(2)

<b>2</b><b>、定义针对于不同数据库的工厂类</b>

定义针对于不同数据库的工厂类,一种数据库就需要创建一个相应的类。最主要代码就是创建不同数据库需要使用的对应的Connection,Command等等对象。这些代码很相似,所以最常见的做法就是先定义一个基类,并且在基类中使用分支语句。

例如在基类中创建连接对象的代码:

public <b>IDbConnection</b> CreateConnection(string DataBaseType)

{

              switch (DataBaseType )

                     {

                            case "SqlServer":

                            {

                                   return new System.Data.Oledb.SqlConnection(sConnectionString);

                            }

                            case "Oracle":

                                   return new System.Data.Oledb.SqlConnection (sConnectionString);

                            case "Access ":

                            …

                     }

}

这样的代码没有使用反射机制,类的实例化被“写死”在代码中,也就是说,如果需要添加其他数据库,不得不打开源代码,添加一个分支并重新编译。为了去处这种分支结构,并且在运行时根据系统提供的参数动态实例化数据库对象,我们引入了反射机制。

<b>   </b>

<b></b>

<b>   本文转自My_King1 51CTO博客,原文链接:</b><b>http://blog.51cto.com/apprentice/1360591</b><b>,如需转载请自行联系原作者</b>