设计模式之单例模式
来源:互联网 发布:金相分析软件下载 编辑:程序博客网 时间:2024/06/07 11:54
java有23中设计模式,单例模式是最简单的,也是使用频率比较高的,但是实现方式有很多种,接下来我们介绍常用的几种方式。
饿汉方式
package com.single.instance; public class Sun { private Sun() {} private static final Sun instance = new Sun(); public static Sun getInstanceSun() { return instance; } }
所谓的饿汉就是在类初始化的时候,我们就给对象实例化。
优点:代码简单,调用快
缺点:类初始化的时候就要创建对象。
懒汉方式(非线程安全)
package com.single.instance;public class Moon { private Moon(){}; private static Moon instance; public static Moon getInstanceMoon(){ if(instance==null){ instance=new Moon(); } return instance; }}
所谓的懒汉的就是,在我调用的获取对象方法的时候,才去创建对象。但是懒汉又可以分为,线程安全,线程不安全,以上是线程不安全的实现方式,如果在多线程中可能就会出错。
懒汉方式(线程安全)
package com.single.instance;public class Moon { private Moon() { }; private static Moon instance; public static Moon getInstanceMoon() { if (instance == null) { synchronized (Moon.class) { if (instance == null) { instance = new Moon(); } } } return instance; }}
懒汉线程安全,是在非安全的基础上加了特定的条件和同步锁,双重判定解决线程安全的问题。
静态内部类
package com.single.instance; public class Single { private Single() { }; private static class Singlehodle { private static final Single instances = new Single(); } public static Single getInstance() { return Singlehodle.instances; } }
Single 类时并不会初始化instances ,只有第一次调用getInstance方法时虚拟机加载
SingletonHolder 并初始化sInstance ,这样不仅能确保线程安全也能保证Singleton类的唯一性,所以
推荐使用静态内部类单例模式
总结:单例模式的实现步骤
1.私有构造
2.创建对象引用
3.定义对外提供的方法获取单例对象
阅读全文
0 1
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- [BZOJ1941][SDOI2010]Hide and Seek(线段树)
- C++成员变量的初始化顺序问题
- malloc/free 和 new/delete 区别
- Hadoop最简单的介绍
- 进程和线程的区别
- 设计模式之单例模式
- 如何写SysV服务管理脚本
- 2018网易游戏笔试题
- 边缘检测:Sobel算子
- 快速搭建iServer大数据分布式空间分析服务
- 读java编程建议--笔记二
- java注释文档的生成
- 动态规划——矩阵链乘法
- repo用法详解