设计模式之单例模式
字数统计:
499字
|
阅读时长:
2分
概念
- 单例模式是常见的设计模式之一,分为饿汉式和懒汉式。
- 使用场景:在项目中,频繁使用的全局单一对象。
饿汉式
- 先创建好单例对象,后使用
- 优点:写法简单,在类加载时候创建对象,避免了线程同步的问题
- 缺点:如果后期开发未使用该单例对象,浪费内存
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class SingleTon { private static SingleTon instance = new SingleTon(); private SingleTon() {} public static SingleTon getInstance() { return instance; } }
|
懒汉式
- 在第一使用时创建对象(延迟加载)
- 优点:避免浪费内存
- 缺点:有可能出现线程不安全的问题(多次创建对象)
线程不安全的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class SingleTon { private static SingleTon instance; private SingleTon() {} public static SingleTon getInstance() { if (null == instance) {
instance = new SingleTon(); } return instance; } }
|
同步代码块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class SingleTon { private static SingleTon instance; private SingleTon(){} public static SingleTon getInstance() { if (null == instance) { synchronized (SingleTon.class) { instance = new SingleTon(); } } return instance; } }
|
同步函数
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class SingleTon { private static SingleTon instance; private SingleTon(){} public static synchronized SingleTon getInstance() { if (null == instance) { instance = new SingleTon(); } return instance; } }
|
利用静态内部类(推荐)
- 静态内部类在第一次使用的时候进行加载
- 优点:实现了懒加载的特性,避免了多线程安全问题
1 2 3 4 5 6 7 8 9 10 11
| public class SingleTon { private SingleTon() {} public static SingleTon getInstance() { return InstanceBuilder.instance; } private static class InstanceBuilder{ private static SingleTon instance = new SingleTon(); } }
|
最后更新时间:
谢谢阅读本文,如果对文章或者网站有什么建议,请发邮件到:1799623289@qq.com