C# 最基本的涉及模式(单例模式)
//密封,保证不能继承
public sealed class Xiaohouye
{
//私有的构造函数,保证外部不能实例化
private Xiaohouye()
{
}
//防止多线程,并发
private static object syncObj = new object();
//我们在给类型中创建一个静态实例。当用户需要该类型的实例时,我们就返回这个实例
private static Xiaohouye instance = null;
public static Xiaohouye Instance
{
//获取实例
get
{
// if 判断保证了唯一性:实现在第一次调用instance 时候才会创建类型的唯一实例,不会每一次调用都创建实例
if (instance == null)
{
// lock 是为了在多线程环境下保证仍然是一个实例,我们应该在判断实例是否已经创建,以及在实例还没有创建的时候创建一个实例的语句上加一个同步锁,当实例已经创建之后,就不需要再做加锁操作了
lock (syncObj)
{
//保证对象永远只有一个
if (instance == null)
instance = new Xiaohouye();
}
}
return instance;
}
}
}