单例模式-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);
}
}
/**
* 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);
}
}
相关文章推荐
- 开始学习Java啦!
- JAVA开发的一个同步程序
- MyEclipse------execute()使用方法
- java concurrent 编程实践
- java中获取真是ip地址方法
- Spring 定时器配置
- java IO流 总结(未完)
- Java多线程之线程协作
- Java字符串操作
- eclipse代码提示
- Java笔记---云服务使用中的报错
- 【细说Java】Java的重写与隐藏
- Java 内存区域和GC机制
- JAVA 线程同步
- eclipse更换字体
- 通过MyEclipse生成Hibernate类文件和hbm.xml文件,或者annotation文件
- Java 动态代理机制
- Java笔记---Mysql使用中的报错
- Java并发编程:Lock
- NetBeans invalid jdkhome specified 问题解决方法