深入探究设计模式<二>——Singleton单例模式
深入探究设计模式<二>——Singleton单例模式
一、功能与结构
A.定义 单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 。
B.用途 此模式用在要求只能出现一个类的实列的某个项目中。比如:项目的全局配置信息、Factory、主控类等。
C.结构图
单例设计模式是我们讨论和使用比较广泛的一种设计模式。
二、模式剖析
我的示例代码
package SingletonPattern;/** * 单例对象 ver 1.0 * @author DeopingXiong * */public class Singleton {//定义将要取得类的实现对象,并赋值为空。private static Singleton singleton = null;//因只需要在内部实例化对象,所以定义为了私有属性private Singleton(){}//定义获取实列的方法public static Singleton getInstance(){if(singleton==null){//如果实例已经创建了,就不需要同步,直接返回,否则就同步线程synchronized(Singleton.class){if(singleton==null){//如果被同步的线程中,有一个线程创建了对象,那么别的线程就不再创建实列对象。singleton = new Singleton();//实列化对象}}}return singleton;}}
getSingleton()方法中第一个
if(singleton==null)判定。排除了被多个线程调用getSingleton()创建多个实例对象,造成内存泄漏的问题。
getSingleton()方法中第二个
if(singleton==null)
public class Singleton implements Serializable { ...... ...... protected Object readResolve() { return getInstance(); } }