单例模式

2018-09-17  本文已影响0人  Lhuo

Ensuer a class has only one instance, and provide a global point of access to it. (确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)

优点

缺点

实现

饿汉式

public class Singleton {
    private static final Singleton singleton = new Singleton();

    //限制产生多个对象
    private Singleton() {
    }

    //通过该方法获取实例对象
    public static Singleton getSingleton() {
        return singleton;
    }

    //类中的其他方法
    public void doSomething(){

    }

懒汉式

public class Singleton2 {
    private static Singleton2 singleton2 = null;

    //限制产生多个对象
    private Singleton2() {
    }

    //通过该方法获取实例对象,进行二次判断,提高加锁后的效率
    public static Singleton2 getSingleton2() {
        if (singleton2 == null) {
            synchronized (Singleton2.class) {
                if (singleton2 == null) {
                    singleton2 = new Singleton2();
                }
            }
        }
        return singleton2;
    }
    
    //类中的其他方法
    public void doSomething(){
        
    }
}

注意事项

上一篇下一篇

猜你喜欢

热点阅读