设计模式中的单例模式的作用是 创建一个全局访问对象,并且只有一个对象,并提供访问方法。 就好像地球一样,世界上只有一个地球。
/// <summary>
/// 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
/// </summary>
class Program
{
static void Main(string[] args)
{
Earth e1 =Earth.Instance();
Earth e2 =Earth.Instance();
Console.WriteLine(ReferenceEquals(e1,e2));
Console.Read();
}
}
//类的单例模式
public class Earth
{
private static Earth OnlyOneEarth;
private Earth()
{
}
public static Earth Instance()
{
if (OnlyOneEarth==null)
{
OnlyOneEarth=new Earth();
}
return OnlyOneEarth;
}
}
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 SingleInsance instance= SingleInsance.GetInstance();
6 SingleInsance instance2 = SingleInsance.GetInstance();
7 Console.WriteLine(ReferenceEquals(instance,instance2));
8
9 OneInstance one = OneInstance.GetIntance();
10 OneInstance two = OneInstance.GetIntance();
11
12 Console.WriteLine(ReferenceEquals(one,two));
13
14 Console.Read();
15 }
16
17 }
18
19 //不可以继承的单例类
20 sealed class SingleInsance
21 {
22 //只能读的静态 静态实例化变量
23 private static readonly SingleInsance instance = new SingleInsance();
24 private SingleInsance() //构造函数私有话以后,就不可以 new 对象, 保证对象全局唯一
25 { }
26 public static SingleInsance GetInstance()
27 {
28 return instance;
29 }
30 }
31
32
33 class OneInstance
34 {
35 private OneInstance() { }
36
37 public static OneInstance instance = null;
38
39 //方法就是为了获得 该类的一个实例
40 public static OneInstance GetIntance()
41 {
42 if (instance==null)
43 {
44 instance = new OneInstance();
45 }
46 return instance;
47 }
48 }