设计模式之单例模式

来源:互联网 发布:js window 添加方法 编辑:程序博客网 时间:2024/06/05 18:30
单例的实现大概有以下六种方式

1.懒汉式,线程不安全,不支持多线程。

package person.dolphin.singleton;public class Singleton_one {    public static Singleton_one singleton;    private Singleton_one() {    }    public static Singleton_one getInstance() {        if (singleton == null) {            singleton = new Singleton_one();        }        return singleton;    }}
2.懒汉式,线程安全,支持多线程

package person.dolphin.singleton;public class Singleton_two {    public static Singleton_two singleton;    private Singleton_two() {    }    public static synchronized Singleton_two getInstance() {        if (singleton == null) {            singleton = new Singleton_two();        }        return singleton;    }}
3.饿汉式

package person.dolphin.singleton;public class Singleton_three {    public static Singleton_three singleton = new Singleton_three();    public Singleton_three() {    }    public static Singleton_three getInstance() {        return singleton;    }}
4.双重校验锁

package person.dolphin.singleton;public class Singleton_four {private volatile static Singleton_four singleton;private Singleton_four() {}public static Singleton_four getSingleton() {if (singleton == null) {synchronized (Singleton_four.class) {if (singleton == null) {singleton = new Singleton_four();}}}return singleton;}}
5.静态内部类

package person.dolphin.singleton;public class Singleton_five {private static class SingletonHolder {private static final Singleton_five INSTANCE = new Singleton_five();}private Singleton_five() {}public static final Singleton_five getInstance() {return SingletonHolder.INSTANCE;}}
6.枚举

package person.dolphin.singleton;public enum Singleton_six {INSTANCE}









0 0
原创粉丝点击