设计模式 单例模式

来源:互联网 发布:任务计划 软件 编辑:程序博客网 时间:2024/04/29 08:01

直接介绍几种线程安全的且我觉得还比较不错的方式:

1、是不是号称恶汉,就是类加载就初始化了

package com.zhy.pattern.singlton;public class Singleton{    private static Singleton instance = new Singleton();    public static Singleton getInstance()    {        return instance ;    }}
2、懒汉,我喜欢这种,需要双重判断

package com.zhy.pattern.singlton;public class Singleton02{    private static Singleton02 instance;    public static Singleton02 getInstance()    {        if (instance == null)        {            synchronized (Singleton02.class)            {                if (instance == null)                {                    instance = new Singleton02();                }            }        }        return instance;    }}

3、使用Java的枚举,还是很推荐的,简单的跟神马一样,如果对枚举不熟悉,小google一下

public enum Singleton03{    INSTANCE;}

4、使用一个持有类,主要是为了不在初始化的时候加载

package com.zhy.pattern.singlton;public class Singleton04{    private static final class InstanceHolder    {        private static Singleton04 INSTANCE = new Singleton04();    }    public static Singleton04 getInstance()    {        return InstanceHolder.INSTANCE;    }}

好了,就这么多,以上4种都是比较推荐使用的,除了第一种会类加载的时候初始化,其他3中都不会,且4种都保证线程安全,特殊情况(除了多个类加载器,和你非要通过反射等手段生成多个对象)不考虑。


转自 鸿洋大神 Blog http://blog.csdn.net/lmj623565791/article/details/24468641

0 0
原创粉丝点击