Java使⽤Enum实现单例模式
在中介绍了单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。如果涉及到反序列化创建对象时推荐使⽤枚举的⽅式来实现单例,因为Enum能防⽌反序列化时重新创建新的对象。本⽂介绍 Enum 的使⽤⽅式。
public enum SingletonEnum{
INSTANCE;
}单例模式的几种实现方式
通过SingletonEnum.INSTANCE来访问实例,使⽤⽅式很简单. 然⽽就这么简单的话也没有更多意义,具体的使⽤⽅式如下:
public enum SingletonEnum {
INSTANCE;
int value;
/
/ 这⾥我们可以⾃定义构造函数.
private SingletonEnum() {
value = 1;
System.out.println("INSTANCE now created!");
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
调⽤:
System.out.println("start get instance!");
SingletonEnum singleton = SingletonEnum.INSTANCE;
System.out.Value());
singleton.setValue(2);
System.out.Value());
输⼊结果为:
start get instance!
INSTANCE now created!
1
2
上⾯的SingletonEnum的定义利⽤的enum是⼀种特殊的class.代码中的第⼀⾏INSTANCE会被编译器编译为SingletonEnum本⾝的⼀个对象.当第⼀次访问SingletonEnum.INSTANCE时会创建该对象,并且enum变量的创建是线程安全的.
1.
2.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论