C#之单例与多例模式

发表于:2010-9-17 12:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
DotNet
#
Dotnet
分享:

  作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

  单例模式有以下特点:

  单例类只能有一个实例。

  单例类必须自己创建自己的唯一实例。

  单例类必须给所有其他对象提供这一实例。

  一个典型的单例类的实现如下所示:其中构造子私有表示子类不能被继承。

public class Singleton
{
  private static Singleton m_instance = null;

  private Singleton()
  {
  }

  public static Singleton getInstance()
  {
    if(m_instance==null)
    {
      m_instance=new Singleton();
    }
    return m_instance;
  }
}

  所谓多例模式,实际上就是单例模式的自然推广,单例类一般情况下只可以有一个实例,但单例类也可以推广到允许有限个实例,这种模式就是多例模式。作为对象的创建模式,多例模式有以下特点:

  多例类可以有多个实例。

  多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

  多例类分为有上限多例类与无上限多例类。

  一个有上限的多例类已经把实例的上限当作逻辑的一部分,并建造到了多例类的内部。如下:

public class Multiton
{
    private static Multiton instance1=null;
    private static Multiton instance2=null;
    private Multiton()
    {
    }

    public static Multiton getInstance(int whichOne)
    {
      if(whichOne==1)
      {
        if(instance1==null)
        {
          instance1=new Multiton ();
        }
        return instance1;
      }
      else
      {
        if(instance2==null)
        {
          instance2=new Multiton ();
        }
        return instance2;
      }
    }
}

  多例类的实例数目不需要有上限,实例数目没有上限的多例模式就叫做无上限多例模式。由于没有上限的多例类对实例的数目是没有限制的,因此,虽然这种多例模式是单例模式的推广,但是这种多例类并不一定能够回到单例类。一般采用聚集管理所有的实例。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号