单体模式的思路:(单体模式在多线程中容易出现被实例化多次的问题,因此要进行双重为空判断来缓解次问题)
1.把构造函数的作用域改为私有的,那样外面就不能new
2.通过一个类的静态方法得到一个静态实例
例如:
public class A
{
static A a = null;
static A ()
{
Console.WriteLine("创建对象");
}
public static A GetA()
{
if(a != null)
{
a = new A();
}
return a;
}
//定义一个方便测试的方法
int b =0;
public void Show()
{
b++;
Console.WriteLine("单个对象被调用了{0}次",b);
}
}
public class Demo
{
static void Main(string[] args)
{
Console.WriteLine("开始执行");
//通过循环来依次调用A的方法
for(int i =0 ; i < 5; i++)
{
A.GetA().Show();
}
}
}