【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.测试结果

 

posted @ 2017-04-13 18:32  chxbar  阅读(411)  评论(0)    收藏  举报