下面来看单例模式的结构图
从上面的类图中可以看出,在单例类中有一个构造函数 Singleton ,
但是这个构造函数却是私有的(前面是“ - ”符号),
然后在里面还公开了一个 GetInstance()方法,
通过上面的类图不难看出单例模式的特点,从而也可以给出单例模式的定义
单例模式保证一个类仅有一个实例,同时这个类还必须提供一个访问该类的全局访问点。
public class Singleton
{
//定义一个私有的静态全局变量来保存该类的唯一实例
private static Singleton singleton;
/// <summary>
/// 构造函数必须是私有的
/// 这样在外部便无法使用 new 来创建该类的实例
/// </summary>
private Singleton()
{
}
/// <summary>
/// 定义一个全局访问点
/// 设置为静态方法
/// 则在类的外部便无需实例化就可以调用该方法
/// </summary>
/// <returns></returns>
public static Singleton GetInstance()
{
//这里可以保证只实例化一次
//即在第一次调用时实例化
//以后调用便不会再实例化
if (singleton == null)
{
singleton = new Singleton();
}
return singleton;
}
}