标签:
一个正常的饿汉单例模式
//CEO,饿汉单例模式
public class CEO extends Staff{
private static final CEO mCeo = new CEO();
//构造函数私有
private CEO(){
}
//公有的静态函数,对外暴露获取单例对象的接口
public static CEO getCeo(){
return mCeo;
}
@Override
public void work(){
//管理VP
}
}
这种最简单的单例模式存在资源消耗、线程安全等问题,所以正常开发过程中并不推荐使用这种单例模式。
常见的单例模式还有DCL方式的单例模式、静态内部类单例模式,但这些都会出现反序列化时重新创建对象的问题。
以上单列模式避免对象在被反序列化时重新生成对象,那么必须加入这个方法:
private Object readResolve() throws ObjectSteamException{
return sInstance;
}
下面介绍两种Android项目中常用的单例模式的实现:
枚举单例
public enum SingletonEnum{
INSTANCE;
public void doSomething(){
System.out.println("do.sth.");
}
}
使用容器实现单例模式
public class SingletonManager{
private static Map<String,Object> objMap = new HashMap<String,Object>();
private SingletonManager(){
}
public static void registerService(String key,Object instance){
if(!objMap.containsKey(key)){
objMap.put(key,instance);
}
}
public static Object getService(String key){
return objMap.get(key);
}
}
单例模式的核心原理都是将构造函数私有化,并且通过静态方法获取一个唯一的实例。
标签:
原文地址:http://www.cnblogs.com/vijozsoft/p/5524978.html