设计模式之单例模式
很重要的一个设计模式!!
介绍:
它和工厂模式一样,都属于创建型模式,用于类进行初始化。
单例模式保证一个类只会被实例化一次。
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(); } }
总结:
- 饿汉式非线程安全;
- 懒汉式线程安全(双重检查模式);
- 饿汉式单例模式;
- 内部静态类方式。
单例模式虽然简单,但是想写的严谨,还是需要考虑周全。实际使用中,推荐使用双重检查模式和内部静态类方式。如果实例在你的程序初始化阶段就会被使用,也可以使用饿汉式。非线程安全的懒汉式只能用于非并发的场景,局限性比较大,并不推荐使用。
__EOF__

本文作者:techgy
本文链接:https://www.cnblogs.com/techgy/p/17506748.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/techgy/p/17506748.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律