单件模式(Singleton)

原创 2007年09月27日 16:49:00

动机

   在软件系统中,经常有这样一些特殊的类,必须保证它们
   在系统中只存在一个实例,才能确保它们的逻辑 确性、
   以及良好的效率 .

应用举例:

单线程Singleton 模式实现

public class Singleton
...{
    
private static Singleton instance;
    
private Singleton()//使用私有构造器防止在外部被new构造实例
    ...{
    }

    
public static Singleton Instance
    
...{
        
get 
        
...{
            
if (instance == null)           //对于多线程当两个线程同时到达这句之后
            ...{
                instance 
= new Singleton();  //这句之前时。就会执行newSingleton两次
            }

            
return instance;
        }

    }

}

 

当多线程调用这个类时,在运行到if(instance==null)  与instance=new Singleton()之间时,可能会出现多个new..对此进行改进适应多线程调用。。

public class Singleton_Mun
...{
    
private static volatile Singleton_Mun instance;
    
private static object obj = new object();
    
private Singleton_Mun()
    
...
    }

    
public static Singleton_Mun Instance

    
...{
        
get
        
...{
            
if (instance == null)
            
...{
                
lock (obj)//上锁 保证只有一个线程进来
                ...{
                    
if (instance == null)
                    
...{
                        instance 
= new Singleton_Mun();
                    }

                }

            }

            
return instance;
        }

    }

}

利用c#语言特有的机制可以简化上面的代码:但是下面代码不支持参数的传递。因为静态构造函数不能传送参数。

public class Singleton2
...{
    
public static readonly Singleton2 instance = new Singleton2();
    
private Singleton2()
    
...{
 
    }

}

public class Singleton3
...{
    
public static readonly Singleton3 instance;
    
static Singleton3()
    
...{
        instance 
= new Singleton3();
    }

    
private Singleton3()
    
...{
 
    }

}

这两段代码等效

 

 

单件模式(Singleton Pattern)(一):单件模式介绍

一、意图          单件模式(又称单例模式)确保一个类只有一个实例,并提供一个全局访问点。 二、适用性 1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问...
  • jialinqiang
  • jialinqiang
  • 2013年05月11日 09:23
  • 3999

Python中的Singleton (单件)模式

 我知道的一种在python中Singleton mode的实现如下:class Foo: passdefinstance():    global inst    try:        inst ...
  • zylcf818
  • zylcf818
  • 2010年03月03日 14:42
  • 1991

单件模式(Singleton)

虽然是.net实现,但思想是一样的,就不用C++再实现一次了。 老生常谈:单件模式     单件模式特点:        1 :单件类只可有一个实例。        2 :单件类必须自己创建自...
  • talking12391239
  • talking12391239
  • 2013年06月14日 22:18
  • 540

singleton单件模式

using  System;  class  A    {   public  static  void  Main(String  []  args)   {    B  m  =  B.GetB(...
  • cxzhq2002
  • cxzhq2002
  • 2007年05月18日 15:14
  • 483

单件模式(Singleton)

单件模式是设计模式中的一种,保证每一个类仅有一个实例。利用访问
  • u013025310
  • u013025310
  • 2014年05月15日 21:34
  • 1680

【单件模式-Singleton】

Java 单例模式详解 概念:   java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。   单例模式有一下特点:   1、单例类只能有一个实例。 ...
  • feipeixuan
  • feipeixuan
  • 2014年01月26日 20:44
  • 523

SingleTon单件模式

public sealed class Singleton{ private static readonly Singleton _instance=new Singleton()...
  • happy664618843
  • happy664618843
  • 2010年06月25日 16:29
  • 318

单件模式-Singleton

基于模版的Singleton模式 template class SingleTemp { public: static T* GetInstance() { //static T...
  • hhmxd
  • hhmxd
  • 2012年04月12日 13:18
  • 129

singleton 单件模式

     首先说说单件模式产生的动机,也就是为什么会出现单件模式。有一些类在系统中只存在一个实例才能确保他们的逻辑正确性以及良好的效率。这时我想到我遇到的一个问题。我曾经遇到一个WinForm程序,运...
  • zhongjiekangping
  • zhongjiekangping
  • 2009年10月28日 17:23
  • 410

单件模式(singleton)

单件模式是设计模式里面最简单的模式。它的目的是设计出只有一个实例的类,并确保全局访问。经典单件模式public static class singleton{ private singleto...
  • mr_phy
  • mr_phy
  • 2017年03月28日 09:12
  • 104
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单件模式(Singleton)
举报原因:
原因补充:

(最多只允许输入30个字)