每一年都奔走在自己热爱里

 
没有人是一座孤岛,总有谁爱着你

单例模式

单例模式(5种)

单例模式 : 一个只有单一对象的类

  1. 饿汉式 空间性能低
    class A{
    private static final A instance = new A();
    public static A newInstance() {
    return instance;
    }
    private A(){}
    }

  2. 懒汉式 时间性能低
    class B{
    private static B instance = null;
    public static synchronized B newInstance() {
    if (instance == null) instance = new B();
    return instance;
    }
    private B() {}
    }

  3. 融合饿汉式和懒汉式的优点
    class C{
    private static class Holder{
    static final C instance = new C();
    }
    public static C newInstance() {
    return Holder.instance;
    }
    private C() {}
    }

  4. 双重检查锁
    public class Singleton {
    private volatile static Singleton singleton;
    public Singleton() {
    }
    public static Singleton getInstance() {
    if (singleton == null) {
    synchronized (Singleton.class) {
    if (singleton == null) {
    singleton = new Singleton();
    }
    }
    }
    return singleton;
    }
    }

  5. 枚举式
    线程安全,调用效率高,但是不能延时加载,但是可以天然的防止反射和反序列化漏洞**
    public enum SingletonDemo4 {
    //这个枚举对象本身就是单例对象
    INSTANCE;
    //添加自己需要的操作
    public void operation(){
    }、
    }

posted @ 2019-12-27 15:04  与乐i  阅读(132)  评论(0编辑  收藏  举报
Live2D
// 生成目录索引列表 //侧边栏目录索引