概述
枚举enum和静态代码块的特性相似,在使用枚举类时,构造方法会被自动调用,
也可以应用这个特性实现单例模式。
package test;
public class MyObject {
private enum MyEnumSingleton{
INSTANCE;
private Resource resource;
private MyEnumSingleton(){
resource = new Resource();
}
public Resource getResource(){
return resource;
}
}
public static Resource getResource(){
return MyEnumSingleton.INSTANCE.getResource();
}
}
如上图,外部只能通过myobject的getResource来获得resource对象,再没有其他途径。
因为枚举变量是static final的,所以如果不是定义时声明,那只能在构造方法中实例化,并且有且只能实例化一次。
所以保证了resource对象的单例性。
看一段测试代码:
import test.MyObject;
public class Run {
class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(MyObject.getResource().hashCode());
}
}
}
public static void main(String[] args) {
Run.MyThread t1 = new Run().new MyThread();
Run.MyThread t2 = new Run().new MyThread();
Run.MyThread t3 = new Run().new MyThread();
t1.start();
t2.start();
t3.start();
}
}
zengrenmeigui
最后
以上就是霸气御姐为你收集整理的单例模式之使用enum枚举数据类型实现的全部内容,希望文章能够帮你解决单例模式之使用enum枚举数据类型实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复