您的位置:首页 > 数据库

配置文件和反射给抽象工厂带来的好处及在机房收费系统中应用的疑惑

2010-02-01 19:45 267 查看

    在简单工厂改进了的抽象工厂中,DataAccess类返回的数据处理的接口类型,在DataAccess类中的Create事件中要实例化实现该借口的数据处理类。按照原先的由简单工厂改进后的抽象工厂模式,则必须要判断数据库类型,然后根据数据库类型实例化具体的数据处理类。这样就增加Select Case判断语句,这倒没什么,重要的我们想改变数据库时改动的地方会很多。如要从SQL Server改成Access,如果我们在做软件时只设计了处理SQL Server 数据库的数据处理类,那么我们就得增加Access数据库的数据处理类(当然这些类也是实现于数据处理接口类的),此外还要在DataAccess类中增加分支判断,是Access数据库则实例化Access数据库数据处理类。而采用配置文件和反射则可以有效避免在DataAccess类中做的改动。这是因为由配置文件可得到数据库类型,由反射可动态实例化数据处理类。

    虽然抽象工厂模式是为解决数据库更换而设计的,但操作不同数据库到底有些什么不同目前尚不十分清楚,除了链接字符串上有区别,还知道Sql Server和Access等在ADO.NET上的使用是不同的,Sql Server用的是System.Data.SqlClient命名空间下的SqlConnection、SqlCommand、SqlParameter、SqlDataAdapter、SqlDataReader等,而Accesss数据库则是用的System.Data.OleDb命名空间下相应的类。此外可能对不同数据库进行操作时SQL语句有些不同吧?!

    对现在正在设计的机房收费系统,如果不同数据库之间的SQL语句没区别,那么现在所写的继承数据表处理接口的数据表处理类就不必在更换数据库时被替换。也就是反射的应用就没有必要了,因为反射在这的作用就是动态的产生数据库处理类(根据条件产生处理Sql Server或其他数据库的处理类,而这些数据库处理类用的就是SQL语句)。

    对这个模式应用的整体感觉是试着应用上了模式来解决数据库更换带来的问题,但究竟解决了没有,解决彻底否尚有很大疑问……

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息