单例模式

Posted sunmin

tags:

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

        对象的创建时一个非常耗费资源的一件事,如果频繁的创建状态没有改变的对象是一件没有意义的事情。那么,我们可以提供一个给予对象的窗口,而不再允许使用者自由的创建实例对象,这种设计模式就是单例模式。

        根据这个对象是在什么时候创建分为懒加载和非懒加载。懒加载就是在使用者明确要对象的时候才创建对象,非懒加载是类一加载就马上创建好对象等着用户老爷要。

        Spring中bean默认就是单例模式,Scope属性没有显示声明为protoType,那么这个bean就是单例的,每次使用时取得的都是同一个bean。

        懒加载的单例模式还涉及到并发时如何保证单例。就是如果有多个线程同时都要一个相同的对象,一看都没有,那么就先创建一个吧,如果不加控制的话,此时会创建多个对象,这也就违背了单例模式的初衷了。

       

package title02;

public class Singleton {

    private static Singleton instance = null;
    
    // 私有的构造器,类以外无法构造实例
    private Singleton() {
        
    }
    
    public Singleton getInstance() {
        // 双重检查加锁
        if (instance == null) {
            synchronized(Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

 

===========================================================================================================================================

       本文只是我现阶段的学习心得总结而成,内容可能不够深入,由于水平所限,不保证所有内容正确,欢迎有同学在评论中指正,万分感谢!

        保证每一个字的原创性!

        作为一个程序员,我所能做的就是每一天都在进步,面对技术保持一颗赤子之心,这是我人生现阶段全部的追求。"Stay hungry, stay foolish"!

============================================================================================================================


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

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块