单例模式

定义:

1、一个类只有一个实例

2、构造函数私有化

3、简单来说,所谓的饿汉式单例就是线程安全的,而且是推荐做法。懒汉式单例就是线程不安全的。

线程安全的:

/**
 * @author Administrator
 * 饿汉式单例,线程安全的
 */
public class SingleInstance {
    private static final SingleInstance singleTon = new SingleInstance();
    
    private SingleInstance() {
    }

    public static SingleInstance getSingleton() {
        return singleTon;
    }
}

线程不安全的:

/**
 * @author Administrator
 * 懒汉式单例,线程不安全的
 */
public class SingleInstance {
    private static final SingleInstance singleTon = null;
    
    private SingleInstance() {
    }
    
    // 加上synchronized,即是线程安全的,
    // public synchronized static SingleInstance getSingleton() {
    public static SingleInstance getSingleton() {
        if (singleTon == null) {
            singleTon = new SingleInstance();
        }
        
        return singleTon;
    }
}

单例模式的扩展:固定数量的实例,get实例的时候可以根据自己的算法get,顺序,随机什么的,这里不做解析。

单例模式优点:

1、减少内存开支,特别是需要频繁创建销毁对象。

2、通过应用启动时永久驻留内存

3、避免对资源的多重占用,例如写文件

4、优化共享资源

单例模式缺点:

1、扩展困难

2、测试困难,必须完成才能做测试

原文地址:https://www.cnblogs.com/jinglingJuly/p/3142055.html