单例模式(饿汉式之静态创建)



以下方式均不推荐开发使用,仅供学习

package singleton;

/**
 * 饿汉式(静态常量)
 */
public class Singleton_1 {
    // 1. 私有化构造器
    private Singleton_1() {}

    // 2. 本类内部创建静态常量型实例
    private final static Singleton_1 instance = new Singleton_1();

    // 3. 对外提供公有的获取实例方法
    public static Singleton_1 getInstance() {
        return instance;
    }
}
package singleton;

/**
 * 饿汉式(静态代码块)
 */
public class Singleton_2 {

    // 1. 私有化构造器
    private Singleton_2() {}

    // 2. 静态变量
    private static Singleton_2 instance;

    static {
        instance = new Singleton_2();
    }

    // 3. 对外提供公有的获取实例方法
    public static Singleton_2 getInstance() {
        return instance;
    }
}

优点

  • 实现简单,避免了线程同步问题

缺点

  • 在类装载时就完成了实例化,达不到懒加载(lazy loding)的效果,如果这个类从始至终都没有使用过,将会造成内存浪费

两种创建方法优缺点一致

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容