两种项目中可用的单例模式

Posted VIJOZ的程序世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两种项目中可用的单例模式相关的知识,希望对你有一定的参考价值。

一个正常的饿汉单例模式

//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);
}
}

单例模式的核心原理都是将构造函数私有化,并且通过静态方法获取一个唯一的实例。

以上是关于两种项目中可用的单例模式的主要内容,如果未能解决你的问题,请参考以下文章

单例设计模式

设计模式-单例模式

饿汉单例模式 and 懒汉单例模式

单例模式中的饿汉模式

单例模式中的饿汉和懒汉模式

单例模式中的饿汉模式和懒汉模式一看就懂