1、推荐使用的单例模式
package com.linoer.effective;
/**
* @author linoer
*
*/
public class EnumSingleton{
private EnumSingleton(){}
public static EnumSingleton getInstance(){
return Singleton.INSTANCE.getInstance();
}
private static enum Singleton{
INSTANCE;
private EnumSingleton singleton;
//JVM会保证此方法绝对只调用一次,防止多次反序列化
private Singleton(){
singleton = new EnumSingleton();
}
public EnumSingleton getInstance(){
return singleton;
}
}
}
避免每次都new出一个对象
package com.linoer.effective;
import java.util.Calendar;
import java.util.Date;
/**
* @author linoer
*
*/
public class StaticInitTest {
private static final Date DATE;
static{
DATE =Calendar.getInstance().getTime();//实例化date
}
public Date getDate(){
return DATE;
}
}