真正用到的时候才知道自己对于抽象工厂的理解是错的,按照我自己的理解,抽象工厂就是SQLhelper,事实看来是大错特错了。
【抽象工厂】
抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。
工厂层的主要作用是应用配置文件和反射技术实现数据库的更换功能。在Factory层中首先定义程序集的名字和明明空间的名字,将程序集的名字和命名空间的值写在配置文件中,当执行到Factory函数时程序会自动通过读取配置文件中的相应字符,按照路径实例化出相应的对象。
''' <summary>
''' 实例化接口为IUserInfo为UserInfoDAL
''' </summary>
''' <returns>IUserInfo</returns>
Public Function CreateUserInfoDAL() As IUserInfo
Dim strInstance As String = strAssembly & "." & "UserInfoDAL" '所要实例化的对象(程序集与命名空间同名)
Return CType(Assembly.Load(strAssembly).CreateInstance(strInstance), IUserInfo) '返回IUserInfo
End Function
End Class
【总结】
这样应用抽象工厂+反射+配置文件解决了数据库访问时的可维护、可扩展的问题。