隐藏页面特效

设计模式之单例模式

很重要的一个设计模式!!

介绍:
它和工厂模式一样,都属于创建型模式,用于类进行初始化。
单例模式保证一个类只会被实例化一次。

1. 线程安全的懒汉单例模式

public class SingletonTwo {
    private volatile static SingletonTwo singletonTwo;

    private SingletonTwo() {
    }

    public static SingletonTwo getInstance() {
        if (singletonTwo == null) {
            synchronized (SingletonTwo.class) {
                if (singletonTwo == null) {
                    singletonTwo = new SingletonTwo();
                }
            }
        }
        return singletonTwo;
    }
}

2. 饿汉式单例模式

public class SingletonThree {
    private static SingletonThree singletonOne = new SingletonThree();

    private SingletonThree() {
    }

    public static SingletonThree getInstance() {
        return singletonOne;
    }
}

3. 内部静态类方式

public class SingletonFour {

    private SingletonFour() {
    }

    public static SingletonFour getInstance() {
        return SingletonHolder.singletonFour;
    }

    private static class SingletonHolder{
        private static final SingletonFour singletonFour = new SingletonFour();

    }
}

总结:

  1. 饿汉式非线程安全;
  2. 懒汉式线程安全(双重检查模式);
  3. 饿汉式单例模式;
  4. 内部静态类方式。

单例模式虽然简单,但是想写的严谨,还是需要考虑周全。实际使用中,推荐使用双重检查模式和内部静态类方式。如果实例在你的程序初始化阶段就会被使用,也可以使用饿汉式。非线程安全的懒汉式只能用于非并发的场景,局限性比较大,并不推荐使用。


__EOF__

本文作者techgy
本文链接https://www.cnblogs.com/techgy/p/17506748.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   AI未来10Y  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示