从今天开始正式学习C#设计模式:
第一章: Singleton模式(单列模式)
该模式为创建形模式,(Creational)
Intent:
确保在系统中只有一个实例,并提供一个该实例的全局访问点(这个责任应该是类设计者的,而非使用者责任)
单线程情况下:
public
class
Thread

...
{
private static Thread _Instance = null;
private Thread()

...{
}
public static Thread Instance

...{
get

...{
if (_Instance != null)

...{
_Instance = new Thread();
}
return _Instance;
}
}
}
多线程情况下:
public
class
MultiThread

...
{
private static volatile MultiThread _Instance = null;
private static object lockHelper = new object();
private MultiThread()

...{ }

public static MultiThread Intance

...{
get

...{
if (_Instance != null)

...{
lock (lockHelper)

...{
if (_Instance != null)

...{
_Instance = new MultiThread();
}
}
}
return _Instance();
}
}
}
另外一种比较好的方法(但该方法不支持在创建对象时使用参数)
public
class
AnotherMethod

...
{
public static readonly AnotherMethod Intance = new AnotherMethod();
private AnotherMethod()

...{ }
}
注意:
C#中,静态构造器只在静态属性和方法之前执行,因为该方法是RunTime调用,所以无法传参.
扩展:
1,将只能有1个实例,扩展到只能有N个实例子,例如对象池的实现
2,将new 构造器的调用转移到其他类中,例如多个类协同工作环境中,某个局部环境只需要拥有某个类的一个实例。