C#之单例与多例模式

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

单例模式有以下特点:


单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
一个典型的单例类的实现如下所示:其中构造子私有表示子类不能被继承。

复制代码
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; 
      } 
    } 
复制代码

 

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

 

转自:http://blog.csdn.net/21aspnet/archive/2007/03/24/1539852.aspx

 

其他关于单例模式的更详细参考:http://www.cnblogs.com/sjms/archive/2010/08/30/1812303.html

posted @   PPDev  阅读(3722)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示