discuznt学习笔记

DBWR=DbHelper(client)

Discuz.Data部分

DbHelper相当与抽象工厂中的Client,其中定义了需要与数据库进行操作的通用方法(如ExecuteScalar,FillDataset,ExecuteNonQuery)

抽象工厂的AbstractFactory为项目中使用的IDbProviderFactory(包含 IDbConnection,IDbCommand,IDbDataAdapter),因为dotnet2.0类库中已经自带,所以不需要闭门造车,重新发明轮子了

ConcreteFactory为Discuz.Data.SqlServer中使用的 SqlClientFactory(实现集体的IDbConnection,IDbCommand,IDbDataAdapter),同样在dotnet2.0类库中已经集成了。

IDbProvider只是方便IDbProviderFactory,简单封装了一下,在其内部使用单例模式与反射实现具体数据库

关于  DatabaseProvider 作用为封装IDataProvider所有具体逻辑,通过单例模式与反射取得具体的数据库提供者,IDataProvider定义了所有业务中需要与数据库进行操作的接口,

Discuz.Data.SqlServer相关类继承IDataProvider实现具体操作

与上面所提的没有关联

参考文章如下:

http://www.cnblogs.com/daizhj/archive/2007/09/24/871224.html   开发作者

http://www.cnblogs.com/Yahong111/archive/2007/07/18/822946.html 设计模式解释举例

原文地址:https://www.cnblogs.com/smart-liu/p/3602739.html