zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用postman做接口测试(三)
    使用postman做接口测试(二)
    使用postman做接口测试(一)
    RobotFramework安装扩展库包autoitlibrary(四)
    RobotFramework安装扩展库包Selenium2Library(三)
    记录.gitattributes 设置合并时使用本地文件无效的解决方案
    golang 踩坑日记
    linux常用命令记录
    vim配置文件
    mysql case when记录
  • 原文地址:https://www.cnblogs.com/xiaopin/p/1803372.html
Copyright © 2011-2022 走看看