运用设计模式只是为了解决一类问题的,当解决掉当前一类问题,通常会在解决这个问题时候 带来其他问题 合理应用扬长避短
net设计模式 (单例模式)学习笔记
概念: 一个类只有一个实例,即一个类只有一个对象实例。
- 第一种类型 基础型 可扩充
public class Singleton
{
private Singleton()
{
}
private static Singleton singleton;
private static object singletonLock = new object();
public static Singleton GetSingleton()
{
if (singleton == null)///多线程 之后的 优化
{
lock (singletonLock)///多线程
{
if (singleton == null)
{
singleton = new Singleton();
}
}
}
return singleton;
}
}
- 第二种类型
public class Singleton
{
private Singleton()
{
}
private static Singleton singleton = null;
/// <summary>
/// 静态构造函数 由CLR保证 在第一次使用这个类之前,调用而且只调用一次
/// </summary>
static Singleton()
{
singleton = new Singleton();
}
public static Singleton GetSingleton()
{
return singleton;
}
}
- 第三种类型
public class Singleton
{
private Singleton()
{
}
/// <summary>
/// 静态变量: 会在类初始化之前调用,而且只会调用一次
/// </summary>
private static Singleton singleton = new Singleton();
public static Singleton GetSingleton()
{
return singleton;
}
}