单例模式

  单例模式:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例.  (属于对象创建型模式)

3要点:1.某个类只能有一个实例;2.这个类必须自行创建这个实例;3.它必须自行向整个系统提供这个实例

  

实现思路:外部不能通过构造方法创建对象,所以就要求单例模式的构造方法要是private的. 只能由该类自己创造一个实例.

  

class Singleton{
        private static Singleton instance=null;//静态的
      //私有构造函数
private Singleton(){}
//静态公有工厂方法,返回唯一实例
public static Singleton getInstance(){
   if(instance==null)
{
   instance=new Singleton();  
}
    return instance;  
}  
}

单例模式还分为有"饿汉单例模式"和"懒汉单例模式".

饿汉单例模式

class Singleton{
        private static Singleton instance=new Singleton();//静态的
      //私有构造函数
private Singleton(){}
//静态公有工厂方法,返回唯一实例
public static Singleton getInstance(){
    return instance;  
}

 懒汉单例模式

class LazySingleton
{
  private static LazySingleton instance=null;
  //辅助对象
  private static readonly object syncRoot=new object();
  private LazySingleton(){}
  public static LazySingleton getInstance()

{

//第一重判断,判断实例是否存在
    if(instance==null)

      {

//给一下代码加锁,一次只能有一个线程访问
        lock(syncRoot)

          {

            //第二重判断,如果实例不存在则创建实例
            if(instance==null){
              instance=new LazySingleton();

            }
            }
      }

   return instance;
}

}

饿汉模式:由于声明了静态变量实例,因此在类加载时就会实例化这个唯一的对象,不管用不用.占用内存;

懒汉模式:在类加载时不会被实例化,而是在第一次调用实例化方法的时候才实例化.

posted @ 2014-04-03 18:38  搞IT的蟋蟀  阅读(153)  评论(0)    收藏  举报