单例模式即只有一个实例,实现分为懒汉模式和饿汉模式。

饿汉模式

/**
 * 单例模式_饿汉模式
 * 类加载的时候完成初始化,因此加载速度相对较慢,但运行是获取对象的速度相对较快
 * 线程安全
 * Created by zhangguoli on 09-18-018.
 * YXV0aG9yOiB6aGFuZ2d1b2xpLmNu
 */
public class SingletonHungry {

    //① 构造方法私有化,外部不可以直接创建对象
    private SingletonHungry() {

    }

    //② 创建类的唯一实例,使用private static修饰
    private static SingletonHungry instance = new SingletonHungry();

    //③ 提供统一对外获取实例的方法
    public static SingletonHungry getInstance() {
        return instance;
    }
}

懒汉模式

/**
 * 单例模式_懒汉模式
 * 类加载时不做初始化
 * 线程不安全
 * Created by zhangguoli on 09-18-018.
 * YXV0aG9yOiB6aGFuZ2d1b2xpLmNu
 */
public class SingletonLazy {

    //① 构造方法私有化
    private SingletonLazy() {

    }

    //② 静态私有成员不做初始化
    private static SingletonLazy instance;

    //③ 统一对外获取实例的方法
    public static SingletonLazy getInstance() {
        // ④ 不存在实例的话则创建,"懒"体现在这
        if (instance == null) {
            instance = new SingletonLazy();
        }
        return instance;
    }
}

标签: 设计模式, 单例模式

添加新评论