您的位置:首页 > 编程语言 > Java开发

单例模式-java描述

2016-03-26 16:39 316 查看
 第一种: 双重查锁模式
/**

* Author : Akeem
* Email : zuiaisha1@126.com
* Created by Akeem on 2016/3/7.
* double check lock
*/
public class DoubleCheckLock
{
private static DoubleCheckLock instance = null;

private DoubleCheckLock()
{
}

public static DoubleCheckLock getInstance()
{
if (instance == null)
{
synchronized (DoubleCheckLock.class)
{
if (instance == null)
{
instance = new DoubleCheckLock();
}
}
}
return instance;
}
}

第二种:懒汉模式

/**
* Author : Akeem
* Email : zuiaisha1@126.com
* Description : 懒汉
*
Created by Akeem on 2016/3/7.
*/
public class Idler
{
private static Idler instance;
private Idler() {

}

public synchronized static Idler getInstance()
{
if (instance == null)
{
instance = new Idler();
}
return instance;
}
}
 
第三种:枚举单例

/**
* Author : Akeem
* Email : zuiaisha1@126.com
* Description :
* Created by Akeem on 2016/3/7.
*/
public enum SingleEnum
{

INSTANCE;
public void doSomething()
{
ToastUtils.showLongToast("do
something...");

}
}

第四种 :静态内部类模式
/**
* Author : Akeem
* Email : zuiaisha1@126.com
* Description : 静态内部类
*
Created by Akeem on 2016/3/7.
*/
public class StaticInner
{

private static StaticInner instance;
public static StaticInner getInstance()
{
return SingletonHolder.STATIC_INNER;
}
private static class SingletonHolder
{
private static final StaticInner STAT
d455
IC_INNER = new StaticInner();
}


第五种 第六种 : 恶汉单例,单例管理类   
/**
* Author : Akeem
* Email : zuiaisha1@126.com
* Description : 单例管理类
,系统就是这么干的
*
Created by Akeem on 2016/3/7.
*/
public class SingletonManager
{
private static Map<String, Object> objMap = new HashMap<>();

private SingletonManager()
{

}

public static void registerInstance(String
key, Object o) {
if (!objMap.containsKey(key))
{
objMap.put(key, o);
}
}

public static Object getService(String
key) {
return objMap.get(key);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: