单例设计模式:
单例设计模式就是保证某个类的实例有且只能有一个不能随意创建实例。例如:我们只有一个地球,地球类的实例只能创建一个。
1、为了阻止类实例的new创建,可以做一个private的构造函数。
2、既然不能从外部使用new进行实例的创建,就从类内部进行实例的创建,为此可以提供一个静态方法和一个要创建的私有全局类实例变量。
3、静态方法实现如下:
/// <summary>
/// 单例模式
/// </summary>
public class SingleC
{
// 定义一个标识确保线程同步
private static readonly object locker = new object();
// 定义一个静态变量来保存类的实例
private static SingleC uniqueCInstance;
// 定义私有构造函数这样外界不能创建该类实例
private SingleC()
{
}
/// <summary>
/// 定义公有方法提供一个全局访问,也可以定义公有属性来提供全局访问
/// </summary>
/// <returns></returns>
public static SingleC GetCInstance()
{
if (uniqueCInstance== null)
{
lock (locker)
{
// 如果类的实例不存在则创建,否则直接返回
if (uniqueCInstance== null)
{
uniqueCInstance= new SingleC();
}
}
}
return uniqueCInstance;
}
}
4、上例中使用了lock锁,防止多线程同时调动时if (uniqueCInstance== null)都可以通过,如果都可以就会有两次实例的创建动作。第一个if (uniqueCInstance== null)是为了一旦实例被创建了就不需要再使用lock阻止因多线程导致多个实例出现。
大神们不喜勿喷,仅作为自我学习笔记!!!