设计模式之单例模式
设计模式中的单例模式的作用是 创建一个全局访问对象,并且只有一个对象,并提供访问方法。 就好像地球一样,世界上只有一个地球。
/// <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 }