by MN-SOFT.COM
13. 二月 2012 19:25
可以保证一个类仅有一个实例,并提供一个访问它的全局访问点,比如程序的配置信息,可使用该模式实现。
构建方式有以下几种:
饿汉模式:
public sealed class Settings
{
private Settings() { }
private static readonly Settings _instance = new Settings();
public static Settings Instance
{
get
{
return _instance;
}
}
}
懒汉模式:直到对象要求产生一个实例才执行实例化,避免了在应用程序启动时实例化不必要的对象;但在多线程的环境下有可能得到Settings类的多个实例。
public sealed class Settings
{
private Settings() { }
private static Settings _instance = null;
public static Settings Instance
{
get
{
if (_instance == null)
{
_instance = new Settings();
}
return _instance;
}
}
}
Bill Pugh的解决方案:及延迟初始化,又保证了线程安全。
public sealed class Settings
{
private Settings() { }
public static Settings Instance
{
get
{
return SingletonHolder.instance;
}
}
private class SingletonHolder
{
internal static readonly Settings instance = new Settings();
}
}
本文基于署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,欢迎转载或创作演绎作品,但是必须保留本文的署名迷你软件(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。