快速业务通道

Discuz!NT中的数据库链接类(重构到抽象类工厂模式)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

为了便于大家对照我将抽象类工厂模式结构图与项目中实现的结构图同时贴上:
      
    首先请大家看一下
AbstractFactory模式的结构图


然后请大家看一下Discuz!NT项目中的数据链接结构图

好,现在开始上路了。
      
      这个架构中最主要的核心数据库链接所需要的(connection, Command,DataAdapter)对象就是围绕下面
m_factory的使用和赋值展开的, 请看如下代码

1   /// <summary>
 2   /// DbProviderFactory实例
 3   /// </summary>
 4   private static IDbProviderFactory m_factory = null;
 5  
 6         /// <summary>
 7   /// DbFactory实例
 8   /// </summary>
 9   public static IDbProviderFactory Factory
10   {
11    get
12    {
13     if (m_factory == null)
14     {
15      m_factory = Provider.Instance();
16     }
17     return m_factory;
18    }
19   }

而其中的Provider.Instance();实现的代码如下:
1    /// <summary>
 2     /// Discuz!NT数据接口
 3     /// </summary>
 4     private static IDbProvider m_provider = null;
 5    
 6     /// <summary>
 7     /// IDbProvider接口
 8     /// </summary>
 9   public static IDbProvider Provider
10   {
11    get
12    {
13     if (m_provider == null)
14     {
15      lock(lockHelper)
16      {
17       if (m_provider == null)
18       {
19        try
20        {
21         m_provider = (IDbProvider)Activator.CreateInstance(Type.GetType(string.Format("Discuz.Data.{0}Provider, Discuz.Data.{0}", BaseConfigs.GetDbType)));
22        }
23        catch
24        {
25         throw new Exception("请检查DNT.config中Dbtype节点数据库类型是否正确,例如:SqlServer、Access、MySql,注意大小写。");
26        }
27                            
28       }
29      }
30                    
31      //m_provider = new DbProviderFinder().GetDbProvider("accesss");
32            
33                    
34     }
35     return m_provider;
36    }
37   }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号