设计模式----创建型型模式之单件模式(Singleton pattern)

  单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点。

  单件模式是比较简单且容易理解的一种设计模式。只有一个实例,通常的做法。。。TODO

  类图比较简单,如下所示:

   

  示例代码:

  懒汉模式(初始化时就创建对象):

public class Singleton {
    private final static Singleton uniqueInstance= new Singleton();
     
    private Singleton() {}
 
    public static Singleton getInstance() {
        return uniqueInstance;
    }
  }
View Code  

  饿汉模式(需要时就创建对象):

public class Singleton {
    private static volatile Singleton uniqueInstance= null;
  
    private Singleton() {}
  
    public static  Singleton getInstance() {
        if(uniqueInstance== null){
             synchronized(this.class){
                 if(uniqueInstance== null){ 
                     INSTANCE = new Singleton();
                  }
              } 
        }
        return uniqueInstance;
    }
  }
View Code

  对某一个类实例化仅一个实例,不涉及类之间的依赖等关系。单件模式注意的地方:单例模式(懒汉模式)在多线程应用下需要谨慎,因为

多个线程同时调用创建实例方法,没有检测到唯一实例的存在,导致各自创建一个实例。当然,上述的代码利用“双重检查加锁”实现减少同synchronized同步所消耗的时间。注:"双重检查加锁"方式只适合jdk5及以后的版本

   单件模式相对比较简单,但是很有实用性。例如获取线程池实例等。

  共勉!!!

 

  

posted on 2017-05-19 10:27  轻浅初夏  阅读(181)  评论(0编辑  收藏  举报

导航