标签:style blog http color os io java ar 2014
Singleton指仅仅被实例化一次的类。一般用来搞那些创建非常耗资源或者要求系统中只能有一个实例的类。这个非常常用。记得以前实习面试的时候就有这个面试题。一般采用的方法是将构造器私有化,然后提供一个static变量,再提供一个static的public方法用来返回static实例:
//Singleton with static factory public class Elvis { private static final Elvis INSTANCE = new Elvis(); private Elvis() {} public static Elvis getInstance(){ return INSTANCE; } public void leaveTheBuilding(){} }
public class Elvis2 { public static final Elvis2 INSTANCE = new Elvis2(); private Elvis2(){} public void leaveTheBuilding(){} }
这种方法的优点就是清晰,明了。缺点就是死板,性能不行。工厂方法优点就是灵活。 缺点就是可以很容易被修改,比如改成为每个调用该方法的线程返回一个唯一的实例。另外这两种方法使这个类变成是可序列化的比较麻烦。。。。所以讲第三种方法:
public enum Elivis3 { INSTANCE; public void leaveTheBuilding(){} }
《effective java》读书札记第三条用私有构造器或者枚举类型强化Singleton属性
标签:style blog http color os io java ar 2014
原文地址:http://blog.csdn.net/howlaa/article/details/39036105