码迷,mamicode.com
首页 > 其他好文 > 详细

Singleton的另外两个分身

时间:2020-06-12 20:34:20      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:加载   利用   instance   get   选择   method   可谓   let   设计   

Singleton的另外两个分身

文章来源: https://www.jianshu.com/p/a503ac517269

前几天我细数了singleton的4个分身。如今又故技重施,数一数它的另外两个分身。这两个分身相较于其他4个分身,可谓是天壤之别,在jvm中是得天独厚的。各位请看:

利用内部类

只有静态内部类可实例化InnerClassSingleton,且在类加载的时候,静态内部类在使用的时候才会初始化。此实现方式可得天独厚,是各很优秀的实现方式。推荐指数??????????!!!

public class InnerClassSingleton {
    private InnerClassSingleton(){
        // 私有构造方法
    }

    private static class InnerClassSingletonHolder{
        private final static InnerClassSingleton INSTANCE = new InnerClassSingleton();
    }

    public static InnerClassSingleton getInstance(){
        return InnerClassSingletonHolder.INSTANCE;
    }
}

利用枚举

利用枚举类的独特优势,无法使用反射等机制进行实例化,天然就是单利的魅力。连私有的构造,此货都是不需要的了,堪称神级设计。推荐指数??????????!!!

public enum EnumSingleton {
    INSTANCE;
    public void method1(){
        // 业务逻辑
    }

    public void method2(){
        // 业务逻辑
    }

    public void method3(){
        // 业务逻辑
    }

    // 调用方式: EnumSingleton.INSTANCE.method1();
}

总结

在像孔乙己一样,研究了回字的四种写法 。哦,是历数了单利的6个分身之后。也许你会有此疑问,难不成在开发的时候,我要时刻默数分身,深深陷入选择困难证中?不不不,这不是我推荐的。够用就好!Hunger很亲民的,好写又好用。“吃了吗?”是我们日常问候语。“饿了吗?”也是我们的日常问候语。实在没必要成为“孔乙己”,共勉。

Singleton的另外两个分身

标签:加载   利用   instance   get   选择   method   可谓   let   设计   

原文地址:https://www.cnblogs.com/zsslll/p/13107203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!