JAVA设计模式【创建型模式】之【SINGLETON】

2018-03-12  本文已影响17人  Terry

前言

今天来介绍创建型模式之单例模式(Singleton),也叫单态模式。

其他创建型模式:

1. 意图

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

2. 适用性

3. 参与者

4. 效果

优点:
1). 对唯一实例的受控访问 因为Singleton类封装它的唯一实例,所以它可以严格的控制客户怎样以及何时访问它。
2). 缩小名控件 Singleton模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染名空间。
3). 允许对操作和表示的精华 Singleton类可以有子类,而且用这个扩展类的实例配置一个应用是很容易的。

5. 实例

单例模式的使用相信大家一定熟练使用了,且有好几种的单例模式的变体,饿汉式、双检锁(DDL)、枚举。

饿汉式:

public class SingletonLazy {
    private static class Holder {
        private static final SingletonLazy instance = new SingletonLazy();
    }
    public static SingletonLazy getSingleton() {
        return SingletonLazy.getSingleton();
    }
}

懒汉式:

public class SingletonDDL {
    private static volatile SingletonDDL sInstance = null;
    public static SingletonDDL getsInstance() {
        SingletonDDL singleton = sInstance;//创建临时变量
        if (sInstance == null) {
            synchronized (SingletonDDL.class) {
                singleton = sInstance;
                if (singleton == null) {
                    sInstance = new SingletonDDL();
                }
            }
        }
        return singleton;//返回的是临时变量
    }
}

枚举:

public enum SingletonEnum {
    INSTANCE;
}

单例模式中为什么用枚举更好?

上一篇 下一篇

猜你喜欢

热点阅读