单例模式总结

作者: 进击的欧阳 | 来源:发表于2019-02-16 11:11 被阅读22次

单例模式

1.懒汉模式

public class Singleton{
    private static Singleton instance = new Singleton();
    private Singleton(){
    }
    public static Singleton getInstance(){
        retuurn instanace;
    }
}

重点:当程序没有调用获取实例方法时,虚拟机已经加载了此类并调用了构造方法,没有延时加载的功能

2.饿汉模式

public class Singleton{
    private static Singleton instance;
    private Singleton(){
    }
    public static Singleton getInstance(){
        if(null == instance){
            instance = new Singleton();
        }
        return instance;
    }
}

重点:有延时加载功能,但线程不安全,当在多线程场景中,可能出现多个实例

3.DCL

public class Singleton{
    private static Singleton instance;
    private Singleton(){
    }
    public static Singleton getInstance(){
        if(null == instance){
            synchronized(Singleton.class){
                if(null == instance){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

重点: 实例化时虚拟机存在指令重排序优化,依然会导致线程不安全,可将instance对象用volatile修饰

4.静态内部类

public class Singleton{
    private Singleton(){}
    private static class SingletonHolder{
        private static final Singleton instance = new Singleton();
    }
    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }
}

重点:延时加载、线程安全,推荐使用

5.枚举

public enum Singleton{
    INSTANCE;
}

重点:延时加载,线程安全,写法简单,如果需要自定义实例方法或者变量需要注意线程安全

相关文章

  • iOS 单例模式 or NSUserDefaults

    本文内容:iOS的单例模式NSUserDefaults的使用总结:iOS单例模式 and NSUserDefaul...

  • 单例模式

    懒汉单例 饿汉模式 总结

  • 【本人秃顶程序员】Java几种方式实现单例模式之经验总结

    ←←←←←←←←←←←← 快,点关注! 最近总结了几种单例模式的实现,做个小总结给大家分享一下。 1、 单例模式,...

  • 单例模式

    单例设计模式是几种设计模式中比较容易理解的,手写单例模式也是面试频繁问到的。下面总结一下单例模式的几种写法: //...

  • Android 丨 单例模式

    面试过程中,单例模式总是会被问及,所以抽时间总结了一份单例相关的笔记 单例概念 单例模式是一种对象的创建模式,它用...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

  • PHP常用设计模式

    工厂模式 单例模式 注册树模式 适配器模式 策略模式 总结

  • 你真的会写单例?

    提到单例模式,相信都不会陌生,今天对其进行总结。 以下是单例模式的特点: 单例类只能有一个实例。 单例类必须自己自...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • java单例模式(推荐)

    单例模式有许多写法,可以结合自己理解选择一个自己喜欢的 引入一个其他人的博客关于单例的不错总结; 单例 单例模式 ...

网友评论

    本文标题:单例模式总结

    本文链接:https://www.haomeiwen.com/subject/pbjbeqtx.html