也总结下单例
1.枚举单例
2.饿汉单例
3.懒汉单例
1.枚举单例
package jse.dp.singleton;
/**
* @author zfc
*
*/
public enum EnumSingle {
//1.定义一个唯一实例
@Deprecated
Single;
//2.收回访问权限
private EnumSingle(){
}
//3.给外部一个访问方法
public static EnumSingle getSingle(){
return Single;
}
}
2.饿汉单例
package jse.dp.singleton;
/**
* @author zfc
* 饿汉式单例
* 此方法以时间换空间,每次进来都要if判断
*/
public class HungrySingle {
//2.这个类唯一的一个实例作为自己的一个属性,仅仅声明
private static HungrySingle single;
//1.收回外部创建实例的权限
private HungrySingle(){
}
//3.给个一个方法访问此属性
public static HungrySingle getHungrySingle(){
if(single==null){
single=new HungrySingle();
}
return single;
}
}
3.懒汉单例
package jse.dp.singleton;
/**
* @author zfc
* 2011.7.11
* 2.懒汉单例
* 2.1:多次访问的都是一个实例
* 2.2:该实例初始化时机即static属性初始化的时机,这个类被读入时即初始化
*
*/
public class MySingle {
private static MySingle mySingle=new MySingle();
//1.收回外部能够实例化的权限
private MySingle(){
}
//2.提供一个静态方法供外部访问实例
public static MySingle getMySingle(){
return mySingle;
}
}