在.NET中处理单例对象

时间:2010-03-05 07:08:24

标签: .net ooad

我有两个类ClassA和ClassB都引用了单个对象ClassHelper。我的问题是,一旦使用ClassA和ClassB

,我应该如何处理单例对象

修改

public ClassA
{
  CHelper obj;

  public ClassA()
  {
    obj = obj.GetInstance("Initialise");
    obj.CallFuncA();
  }
}

On the same lines
public ClassB
{
  CHelper obj;

  public ClassB()
  {
    obj = obj.GetInstance("Initialise");
    obj.CallFuncB();
  }
}


where 

CHelper
{
   private static sm_CHelper;

   public static GetInstance(string strInitialise)
   {
      if(sm_CHelper == null)
      {
         sm_CHelper = new CHelper(strInitialise);
      }
   }

   private CHelper(string strInitialise)
   {
      //do something here 
   }

   public CallFuncA()
   {
     // do something here
   }
   public CallFuncB()
   {
     // do something here
   }
}

此致 学习者

3 个答案:

答案 0 :(得分:1)

如果你正在谈论singelton模式那么你就不应该处理它....如果你没有提到singelton模式,那么你可以尝试使用解构器来运行你的处置逻辑。

答案 1 :(得分:0)

该单身人士应在申请期间保持活着状态。所以在处理ClassA和ClassB时不应该丢弃它。

答案 2 :(得分:0)

我从未见过这样的例子。我可能会做类似的事情:

 class Resource {

     static Resource Instance  = new Resource();
     static int count = 2;

     public Resource CheckOut() { 
        if (--count <= 0)
            Instance = null;
        return Instance;
     }
 }

这样,在ClassA和ClassB签出资源后,静态引用就会停止它。在ClassA和ClassB失去对Resource的引用后,终结器将被称为下一轮垃圾收集。