码迷,mamicode.com
首页 > 编程语言 > 详细

Java设计模式--单例模式

时间:2017-11-07 14:33:05      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:--   zed   单例   实例化   模式   oid   return   ati   span   

饿汉单例模式:

package com.design.singleton;

public class EagerSingleton {

    private static final EagerSingleton EAGER_SINGLETON = new EagerSingleton();

    private EagerSingleton(){}

    public static EagerSingleton getInstance(){
        return EAGER_SINGLETON;
    }
}

当这个类被加载时,静态变量 EAGER_SINGLETON 就会被初始化。

 

 懒汉式单例:

package com.design.singleton;

public class LazySingleton {

    private static LazySingleton lazySingleton = null;

    private LazySingleton(){}

    public synchronized static LazySingleton getInstance(){
        if (lazySingleton == null){
            return new LazySingleton();
        }
        return lazySingleton;
    }

}

 

【区别】饿汉单例模式在自己被加载时就将自己实例化。从资源利用的角度讲,饿汉比懒汉差点。从速度和反应时间来讲,饿汉比懒汉块。懒汉在实例化的时候,需要处理多线程的问题。

 

还有一种用的比较多的

静态内部类单例:

package com.design.singleton;

public class InnerSingleton {

    private InnerSingleton(){}

    private static class Inner{
        private static InnerSingleton Instance = new InnerSingleton();
    }

    public static InnerSingleton getInstance(){
        return Inner.Instance;
    }
    
    public void doSomething(){
        // do something
    }
    
}

 

这个单例线程安全

 

Java设计模式--单例模式

标签:--   zed   单例   实例化   模式   oid   return   ati   span   

原文地址:http://www.cnblogs.com/LUA123/p/7798596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!