结合项目实例 回顾传统设计模式(五)单例模式
2011-10-04 14:05 熬夜的虫子 阅读(538) 评论(0) 编辑 收藏 举报这个...... 大家应该熟的不能再熟了 虫子就不班门弄斧了
private static object LockKey = new object();
private static T _Instance;
public static T GetInstance()
{
return GetInstance(null);
}
public static T GetInstance(Func<T> onCreateInstance)
{
if (_Instance == null)
{
lock (LockKey)
{
if (_Instance == null)
{
try
{
if (onCreateInstance == null)
_Instance = new T();
else
_Instance = onCreateInstance();
}
catch
{
_Instance = default(T);
}
}
}
}
return _Instance;
}
public static T GetInstance(object lockKey, T instance, Func<T> onCreateInstance)
{
if (instance == null)
{
if (lockKey == null)
lockKey = LockKey;
lock (lockKey)
{
if (instance == null)
{
try
{
if (onCreateInstance == null)
instance = new T();
else
instance = onCreateInstance();
}
catch
{
instance = default(T);
}
}
}
}
return instance;
}
private static T _Instance;
public static T GetInstance()
{
return GetInstance(null);
}
public static T GetInstance(Func<T> onCreateInstance)
{
if (_Instance == null)
{
lock (LockKey)
{
if (_Instance == null)
{
try
{
if (onCreateInstance == null)
_Instance = new T();
else
_Instance = onCreateInstance();
}
catch
{
_Instance = default(T);
}
}
}
}
return _Instance;
}
public static T GetInstance(object lockKey, T instance, Func<T> onCreateInstance)
{
if (instance == null)
{
if (lockKey == null)
lockKey = LockKey;
lock (lockKey)
{
if (instance == null)
{
try
{
if (onCreateInstance == null)
instance = new T();
else
instance = onCreateInstance();
}
catch
{
instance = default(T);
}
}
}
}
return instance;
}
直接总结:单例模式确保一个类只有一个实例,并提供一个全局访问点
![]() |
原创作品允许转载,转载时请务必以超链接形式标明文章原始出处以及作者信息。 作者:熬夜的虫子 点击查看:博文索引 |