单例模式(Singleton)

创建型设计模式。保证一个类仅有一个实例,并提供一个访问它的全局访问点。

单线程单例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Single
{
//声明静态变量
private static Single Instance;
//构造函数,不设置的话,默认是一个public的构造函数
private void Single();
//暴露的方法
public Single GetInstance()
{
if(Instance == null)
{
Instance = new Single();
}
return Instance;
}
}

多线程单例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Single
{
private static Singel Instance;
object obj = new object();
private void Single();
public Single GetInstance()
{
if(Instance == null)
{
lock(obj)
{
if(Instance == null)
{
Instance = new Single();
}
}
}
return Instance;
}
}

极简写法

1
2
3
4
5
public class Single
{
public static readonly Single Instance = new Single();
private void Single();
}

等同于

1
2
3
4
5
6
7
8
9
public class Single
{
public static readonly Single Instance;
private void Single();
private static Single()
{
return new Single();
}
}