单件模式(Singleton)
所谓的单件模式,就是说在系统中,一个类只存在唯一的实例,同时提供一个唯一的访问方法。
在我们的开发中,经常会发生使用唯一对象的情况,例如Web开发中,要记录网站访问人数的对象;程序属性配置的对象;网络编程中,只能建立一个连接的对象等等,类似于这些应用场景,都可以应用单件模式来处理。
下面举个例子来说明单件模式的使用,例子的功能是程序的配置信息管理,需要提供一个对配置的添加及读取方法,同时,只允许创建一个配置管理类的实例,代码如下:
class SingletonConfig
{
private Dictionary<string, string> lsConfig = new Dictionary<string, string>();
/// <summary>
/// 私有构造函数,防止外部程序调用创建新实例
/// </summary>
private SingletonConfig()
{
}
public void Add(string key, string value)
{
lsConfig.Add(key, value);
}
public string Get(string key)
{
if (lsConfig.ContainsKey(key))
{
return lsConfig[key];
}
else
{
return null;//也可抛出异常
}
}
private static SingletonConfig _instance;
/// <summary>
/// 配置类实例访问对象
/// </summary>
public static SingletonConfig Instance
{
get {
if (_instance == null)
{
_instance = new SingletonConfig();
}
return _instance;
}
}
}
上面的代码有两个需要注意的地方,一是构造函数申明为私有类型,这可以预防代码通过构造函数的方法来生成新的实例,如下面的代码将会引起编译器错误:
SingletonConfig s = new SingletonConfig();