设计模式----创建型型模式之单件模式(Singleton pattern)
单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点。
单件模式是比较简单且容易理解的一种设计模式。只有一个实例,通常的做法。。。TODO
类图比较简单,如下所示:
示例代码:
懒汉模式(初始化时就创建对象):
public class Singleton { private final static Singleton uniqueInstance= new Singleton(); private Singleton() {} public static Singleton getInstance() { return uniqueInstance; } }
饿汉模式(需要时就创建对象):
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; } }
对某一个类实例化仅一个实例,不涉及类之间的依赖等关系。单件模式注意的地方:单例模式(懒汉模式)在多线程应用下需要谨慎,因为
多个线程同时调用创建实例方法,没有检测到唯一实例的存在,导致各自创建一个实例。当然,上述的代码利用“双重检查加锁”实现减少同synchronized同步所消耗的时间。注:"双重检查加锁"方式只适合jdk5及以后的版本
单件模式相对比较简单,但是很有实用性。例如获取线程池实例等。
共勉!!!