三种单例模式

Posted Java菜鸟技术栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种单例模式相关的知识,希望对你有一定的参考价值。

单例模式:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

单例模式有三种:懒汉式单例,饿汉式单例,双重检查。

懒汉式:

Public class singleton {Private static singleton singleton;Private Singleton() {} //此类不能被实例化Public static synchronized SingletongetInstance(){ If(singleton== null){ Singleton = new Singleton(); } Returnsingleton;}}

优点:第一次调用才初始化,避免内存浪费。

缺点:必须枷锁Synchronized 才能保证单例,(如果两个线程同时调用getInstance方法,会初始化两次)但加锁会影响效率。

饿汉式:

Public class Singleton { Privatestatic finaol Singleton SINGLETON= new Singleton(); PrivateSingleton(){} Publicstatic Singleton getInstance(){ Return singleton;}}

优点:没有加锁,执行效率会提高。

缺点:类加载时就初始化,浪费内存。

 

登记模式:

Public class Singleton(){ PrivateSingleton(){} Publicstatic Singleton getInstance(){ Return Holder.singleton;}Private staticclass Holder{ Private static final SingletonSingleton = new Singleton();}}

内部类只有在外部类被调用才加载,产生SINGLETON实例;又不用加锁。此模式有上述两个模式的优点。






以上是关于三种单例模式的主要内容,如果未能解决你的问题,请参考以下文章

三种单例模式

三种单例模式与Object祖先类

使用单例时的三种单例写法

设计模式总结(Java)

设计模式总结(Java)

八种单例模式分析