单例模式大家都很熟悉,今天在使用枚举的时候想起了《effective java》里面说单元素的枚举类型已经成为实现Singleton的最佳方法
,但是书里没有给出实现,于是我就想按自己的理解实现一下
实现长这样
class Demo {
Demo() {
System.out.println("create");
}
public void getInfo(){
System.out.println("demo print");
}
}
public enum SingleCase {
instance(new Demo());
SingleCase(Demo demo) {
this.demo = demo;
}
public Demo demo;
}
测试一下
@Test
public void test(){
SingleCase singleCase=SingleCase.instance;
singleCase.demo.getInfo();
SingleCase singleCase3=SingleCase.instance;
singleCase3.demo.getInfo();
SingleCase singleCase2=SingleCase.instance;
singleCase2.demo.getInfo();
SingleCase singleCase1=SingleCase.instance;
singleCase1.demo.getInfo();
System.out.println(singleCase.demo==singleCase1.demo);
System.out.println(singleCase1.demo==singleCase2.demo);
System.out.println(singleCase2.demo==singleCase3.demo);
}
结果如下
create
demo print
demo print
demo print
demo print
true
true
true