2. 单例模式之饿汉式:静态代码块的方式

31 阅读1分钟
package com.pattern.pattern01.singleton02;

/**
 * @Author:kaiyang.cui
 * @Package:com.pattern.pattern01.singleton02
 * @Project:Pattern23
 * @name:Singleton
 * @Date:2023/4/13 上午12:52
 * @Filename:Singleton
 * @Description:单例模式之饿汉式:静态代码块的方式
 * @Version:1.0
 */
public class Singleton {
    
    // 私有构造方法
    private Singleton() {

    }

    /**
     * 声明Singleton对象
     */
    private static Singleton singleton = null;

    // 在静态代码块中进行赋值
    static {
        singleton = new Singleton();
    }

    /**
     * 对外提供获取该类对象的方法
     * @return
     */
    public static Singleton getSingleton() {
        return singleton;
    }
}
package com.pattern.pattern01.singleton02;

/**
 * @Author:kaiyang.cui
 * @Package:com.pattern.pattern01.singleton02
 * @Project:Pattern23
 * @name:Client
 * @Date:2023/4/13 上午1:20
 * @Filename:Client
 * @Description:判断饿汉式获取到的两个对象是否是同一个对象,结果为true,验证了单例模式只能创建一个对象
 * @Version:1.0
 */
public class Client {
    public static void main(String[] args) {

        // 创建Singleton类的对象
        Singleton singleton1 = Singleton.getSingleton();
        Singleton singleton2 = Singleton.getSingleton();

        // 判断获取到的两个对象是否是同一个对象
        // true
        System.out.println(singleton1 == singleton2);
    }
}