Java中单例模式实现
来源:互联网 发布:java和php哪个前景好 编辑:程序博客网 时间:2024/06/10 18:17
单例模式是Java编程中应用最多的一种设计模式,现在个人将单例模式经常使用到的几种实现方式,简单列举一下:
1、 立即加载模式或者说恶汉模式
public class SingleInstance1 { //立即加载模式或者说恶汉模式,即在调用方法前实例已经被创建 public static final SingleInstance1 singleInstance1 = new SingleInstance1(); private SingleInstance1(){} public static SingleInstance1 getInstance(){ return singleInstance1; }}
2、延迟加载模式或者懒汉模式
其也称之为双重检查锁机制(DCL)
public class SingleInstance2 { //延迟加载或者懒汉模式 //使用双重检测机制来解决问题,既保证了不需要同步代码的异步执行性,有保证了单例的效果 public volatile static SingleInstance2 singleInstance2; private SingleInstance2(){} public static SingleInstance2 getSingleInstance(){ try { if(singleInstance2==null){ synchronized(SingleInstance2.class){ if(singleInstance2==null){ singleInstance2 = new SingleInstance2(); } } } }catch (Exception e){ e.printStackTrace(); } return singleInstance2; }}
3、 静态内部类实现机制
使用静态内部类同样能够实现DCL的效果。
public class SingleInstance3 { public static class SingleInstance3Handler{ private static SingleInstance3 singleInstance3 = new SingleInstance3(); } //使用静态内置类实现DCL同样的效果 private SingleInstance3(){} public static SingleInstance3 getInstance(){ return SingleInstance3Handler.singleInstance3; }}
4、Static静态代码块实现
public class SingleInstance4 { private SingleInstance4(){} public static SingleInstance4 singleInstance4; static { singleInstance4 = new SingleInstance4(); } public static SingleInstance4 getInstance(){ return singleInstance4; }}
5、枚举类实现
public class MySingleInstance { public enum SingleInstance5{ connectionFactory; private Object object; private SingleInstance5() { object = new Object(); } public Object getObject(){ return object; } } public static Object getObject(){ return SingleInstance5.connectionFactory.getObject(); }}
以上是Java语言经常使用到的几种实现方式,这里仅仅是简单列举了一下,当然其他语言也同样能够实现,原理是相同的。以上三种实现方式在多线程的环境条件下,能够是线程安全的。
阅读全文
0 0
- Java中单例模式实现
- Java中单例模式实现方法
- Java中单例模式实现方法
- Java中单例模式的实现
- java中单例模式的实现
- Java中单例模式的多种实现方式
- 深刻理解Java中单例模式的实现
- java中单例模式的最佳实现分析
- Java实现观察者模式
- Java实现观察者模式
- JAVA DAO模式实现
- 观察者模式-java实现
- 外观模式 JAVA实现
- 策略模式-java实现
- java实现工厂模式
- java实现适配器模式
- 策略模式 java实现
- java实现观察者模式
- 从零开始
- java程序性能优化之设计优化--优化组件和方法(2)
- BZOJ2244 & Codevs1822 [SDOI2011]拦截导弹
- Linux Shell Scripting Cookbook, Second Edition [eBook] pdf,epub,mobi,code
- cs231n-2017-assignments2-TensorFlow.ipynb 自动调参
- Java中单例模式实现
- node.js
- 使用输入输出流迭代器读取和写入文件
- 2017暑期集训一Restoring Painting(思维)
- js校验页面输入是否为空
- 内存映射
- LSTM
- 2016web前端面试题
- Html5(移动端)开发,安卓机上的软键盘顶起影响页面布局