【6.1】使用枚举创建单例模式
前言:使用枚举创建单例可以避免反射暴力破解和(反)序列化带来的问题。具体参考本博文的【6.3】为什么使用枚举来创建单例:http://www.cnblogs.com/chxbar/p/6705529.html
1.如何使用枚举创建单例:
package reflect;
/**
* 一个用于实现单例的类
* @author Administrator
*
*/
class SingleClass{
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//随便一个方法
public void printname(){
System.out.println("SingleClass的属性name=" + name);
}
}
/**
* 使用枚举创建SingleClass类的单例,并测试
* @author Administrator
*
*/
public class Testenum {
enum SingletonDemo{
INSTANCE;
private SingleClass single;
private SingletonDemo(){
single = new SingleClass();
single.setName("chx");
}
public SingleClass getsingle(){
return single;
}
}
public static void main(String[] args) {
SingleClass sin1 = SingletonDemo.INSTANCE.getsingle();
SingleClass sin2 = SingletonDemo.INSTANCE.getsingle();
System.out.println("sin1的输出:");
sin1.printname();
System.out.println("sin2的输出:");
sin2.printname();
System.out.println("====判断是否创建的为单例====");
System.out.println(sin1.equals(sin2));
System.out.println(sin1==sin2);
}
}
2.测试结果


浙公网安备 33010602011771号