设计模式之单例模式

很重要的一个设计模式!!

介绍:
它和工厂模式一样,都属于创建型模式,用于类进行初始化。
单例模式保证一个类只会被实例化一次。

1. 线程安全的懒汉单例模式

public class SingletonTwo {
    private volatile static SingletonTwo singletonTwo;

    private SingletonTwo() {
    }

    public static SingletonTwo getInstance() {
        if (singletonTwo == null) {
            synchronized (SingletonTwo.class) {
                if (singletonTwo == null) {
                    singletonTwo = new SingletonTwo();
                }
            }
        }
        return singletonTwo;
    }
}

2. 饿汉式单例模式

public class SingletonThree {
    private static SingletonThree singletonOne = new SingletonThree();

    private SingletonThree() {
    }

    public static SingletonThree getInstance() {
        return singletonOne;
    }
}

3. 内部静态类方式

public class SingletonFour {

    private SingletonFour() {
    }

    public static SingletonFour getInstance() {
        return SingletonHolder.singletonFour;
    }

    private static class SingletonHolder{
        private static final SingletonFour singletonFour = new SingletonFour();

    }
}

总结:

  1. 饿汉式非线程安全;
  2. 懒汉式线程安全(双重检查模式);
  3. 饿汉式单例模式;
  4. 内部静态类方式。

单例模式虽然简单,但是想写的严谨,还是需要考虑周全。实际使用中,推荐使用双重检查模式和内部静态类方式。如果实例在你的程序初始化阶段就会被使用,也可以使用饿汉式。非线程安全的懒汉式只能用于非并发的场景,局限性比较大,并不推荐使用。

posted @ 2023-06-28 23:29  AI未来10Y  阅读(9)  评论(0编辑  收藏  举报