Discuz!NT中的数据库链接类(重构到抽象类工厂模式)
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-04-11
为了便于大家对照我将抽象类工厂模式结构图与项目中实现的结构图同时贴上: 然后请大家看一下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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Discuz!NT中的数据库链接类(重构到抽象类工厂模式)的所有评论