Java中单例模式实现
2017-07-22 17:55
99 查看
单例模式是Java编程中应用最多的一种设计模式,现在个人将单例模式经常使用到的几种实现方式,简单列举一下:
1、 立即加载模式或者说恶汉模式
2、延迟加载模式或者懒汉模式
其也称之为双重检查锁机制(DCL)
3、 静态内部类实现机制
使用静态内部类同样能够实现DCL的效果。
4、Static静态代码块实现
5、枚举类实现
以上是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语言经常使用到的几种实现方式,这里仅仅是简单列举了一下,当然其他语言也同样能够实现,原理是相同的。以上三种实现方式在多线程的环境条件下,能够是线程安全的。
相关文章推荐
- JAVA中单例模式的几种实现方式
- java中单例模式的3种实现
- 深刻理解Java中单例模式的实现
- JAVA中单例模式实现的五种方式,有详细的比较
- Java中单例模式实现方法
- Java中单例模式的多种实现方式
- Java中单例模式实现方法
- Java中单例模式的几种正确实现方法
- JAVA中单例模式的几种实现方式
- java中单例模式的最佳实现分析
- java中单例设计模式的两种实现方式
- 设计模式:用Java动态代理实现AOP
- Java Tip: 用Reflection实现Visitor模式
- 简单工厂(Simple Factory)模式的Java实现[00原创]
- 23种经典设计模式的java实现_5_职责链模式
- 单例(Singleton)模式的Java实现[00原创]
- 多例(Multiton)模式的Java实现[00原创]
- 建造者(BUilder)模式的Java实现[00原创]
- 从设计模式学习oop思维,最后再具体通过java实现
- 创建型模式之一 工厂模式(Java实现)(一)