关于DataProvider_对数据层的另一种设计

实际上就是很简单的通过定义一个接口来隐藏实现细节。并根据配置动态的指定该接口的实现方式。
拿用户模块来说吧,以前我们是把关于用户、角色、权限的数据访问操作分开到如DbUser,DbRole,DbPermission这样的类里面的。
现在我们用一个大的接口把它们放到一起。

例如:
父类DataProvider描述这个接口。
子类提供具体实现。
用户通过父类DataProvider的Instance方法获取具体的子类的对象。
父类DataProvider的Instance方法通过在web.config中的配置,运用反射来获得获得具体子类,并生成其对象。

父类DataProvider描述了获取用户,添加角色等等方法。
而子类则具体实现了这些方法。
我们通过在web.config里配置指定不同的子类,就可以让那些方法有不同的实现。
比如说你可以有一个SqlDataProvider,用来实现对Sql Server数据库的访问。
再有一个OracleDataProvider,用来实现对Oracle数据库的访问。
它们都是DataProvider的子类。
诸如此类,或是更灵活的运用。

示例代码:http://www.dormforce.net/public/Provider Test.rar

另外这段代码还用到了自定义的web.config配置,参见:http://dormforce.net/Blog/xebec/articles/906.aspx

原文地址:https://www.cnblogs.com/yamajia/p/959905.html