欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java设计模式-单例模式,

来源: javaer 分享于  点击 10526 次 点评:186

Java设计模式-单例模式,


1、用到过的场景

  • 构建类的方式固定(返回的类的值都是固定的)

2、饿汉模式(不要用)

package com.cc.eed.sin;

/**
 * <p>单例模式 - 饿汉 (线程不安全)</p>
 *
 * @author CC
 * @since 2023/10/12
 */
public class SingletonDemo2 {

    private static final SingletonDemo2 INSTANCE = new SingletonDemo2();

    private SingletonDemo2(){
    }

    public static SingletonDemo2 getInstance() {
        return INSTANCE;
    }

}

3、懒汉模式(双重验证+锁)

  • 推荐使用:双重验证 + 锁
package com.cc.eed.sin;

/**
 * <p>单例模式 - 懒汉 (线程安全)</p>
 * <li>双重验证 + 锁</li>
 *
 * @author CC
 * @since 2023/10/12
 */
public class SingletonDemo {

    private static volatile SingletonDemo INSTANCE;

    private SingletonDemo(){
    }

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

}

4、静态内部类模式(推荐)

package com.cc.eed.singleton;

/**
 * <p>单例模式 - 静态内部类模式</p>
 *
 * @author CC
 * @since 2023/10/17
 */
public class SingletonDemo3 {

    private SingletonDemo3() {
    }

    /**
     * 静态内部类 生产单例
     */
    private static final class InstanceHolder {
        static final SingletonDemo3 INSTANCE = new SingletonDemo3();
    }

    public static SingletonDemo3 getInstance(){
        return InstanceHolder.INSTANCE;
    }
}

5、参考:
https://www.cnblogs.com/ladderx/p/16854962.html

相关栏目:

用户点评