关于多帐套Database的单例模式,求指点,在线等。

xiangcong 2012-06-20 04:03:35
现在是做一个多帐套的进销存系统,每个帐套对应一个独立的数据库。
在实例化数据访问对象时,我是想每个帐套对应一个单例。 采用单例模式来构造数据访问对象,但一直觉得设计上有点缺陷,各位有这块经验的请多多指点阿。
我用了两个类,DBFactory和WorkItemCollection.


public class DBFactory
{
private static string _actName;//帐套名
public DBFactory(string actName)
{
_actName = actName;
}
private static WorkItemCollection<Database> collection = new WorkItemCollection<Database>();
private static object lockHelper = new object();
public static Database Instance
{
get
{
var instance = collection.GetWorkItem(_actName);
if (instance == null)
{
lock (lockHelper)
{
if (instance == null)
{
instance = new GenericDatabase("根据帐套获取到的连接字符串", SqlClientFactory.Instance);
collection.Add(instance);
}
}
}
return instance;
}
}
}


public class WorkItemCollection<T> where T : class
{
protected IList<T> items = new List<T>();
/// <summary>
/// 外部获得T类型的入口
/// </summary>
/// <returns></returns>
public virtual T GetWorkItem(string actName)
{
if (items == null || items.Count == 0) return null;
//可能的话返回一个现成实例
foreach (T item in items)
{
return item;
}
return null;//如果没有现成的实例则返回null
}
/// <summary>
/// 添加一个实例
/// </summary>
/// <param name="item"></param>
public virtual void Add(T item)
{
if (item == null) throw new ArgumentNullException("item is null");
items.Add(item);
}
}

...全文
149 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangcong 2012-06-25
  • 打赏
  • 举报
回复
哎,没人回复,自己顶

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧