美文网首页Java
我见到过的写Singleton的新思路

我见到过的写Singleton的新思路

作者: Derek重名了 | 来源:发表于2017-07-16 22:21 被阅读14次

    Java1.5及以后,单例的写法有了一种新思路,使用用enum来做。至于为什么说是1.5及以后版本,我查了一下,enum关键词是Java1.5引入的。

    直接上个简单的例子

    public enum DSingletonClazz {
        INSTANCE;
    
        private String aStr;
    
        public void setStr(String str) {
            aStr = str;
        }
    
        public String theStr() {
            return "str: " + aStr;
        }
    
        public void doSth() {
            System.out.println("do something");
        }
    }
    

    使用方法

    public class DUsingSingleton {
    
        @Test
        public void usingEnumSingletonClazz() {
            DSingletonClazz clazz = DSingletonClazz.INSTANCE;
            clazz.doSth();
    
            clazz.setStr("Derek");
            System.out.println(clazz.theStr());
        }
    
    }
    

    看多了常见的使用final static变量来处理单例,使用enum来做单例的思路还真是挺清奇的。

    优点:更简洁,完美单例序列化,多线程下防止多次实例化,解决反射攻击,等

    没错,我就是在《Effective Java》上看到的新思路~~~

    相关文章

      网友评论

        本文标题:我见到过的写Singleton的新思路

        本文链接:https://www.haomeiwen.com/subject/nbuxkxtx.html