单例模式
单例模式
大年初一。看了一下李建忠先生讲的单件模式,决定写点什么,写的东西呢,如题。
单例模式就是设计模式中的一种,唯一与多态、继承、封装没有关系的一个设计模式。它是属于一个创建型的设计模式。创建型的主要负责的是创建对象。另外还有一些结构型和行为型的一些设计模式。结构型主要处理类与对象间的一些关系,行为型则处理类与对象交互的一些问题。
一般而言,我们是一直能创建出对象的,能一直new出来的。能创建出很多实例的,要new一个对象必须访问构造函数,除非你让构造函数不能访问,将其权限改成private。话回单立模式,思路就是我们在当前类中创建一个静态方法。当然需要注意的是必须是静态方法,因为不能new对象了,你就不可以调用实例方法的。在静态方法中,如果当前实例为空,则new一个当前方法的实例,如若有则将已有的实例返回也就好了。那么上面得对象的时候就得用静态方法的点出来了,就不用实例方法new了。
下面附上代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Security.Cryptography.X509Certificates; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace _02单立模式 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 //Singleton s1 = new Singleton(); 15 //Singleton s2 = new Singleton(); 16 Singleton s1 = Singleton.CreageSingleton(); 17 Singleton s2 = Singleton.CreageSingleton(); 18 Console.WriteLine(s1); 19 Console.WriteLine(s2); 20 Console.WriteLine(object.ReferenceEquals(s1, s2)); 21 Console.ReadKey(); 22 } 23 } 24 25 /// <summary> 26 /// 创建一个实例类。名字叫Singleton. 27 /// </summary> 28 public class Singleton 29 { 30 private static Singleton _instance; 31 //private Singleton()此处与上面的注释的相对应,如若此处访问符改成private则上面注释的两行代码是会错的。 32 //{ 33 34 //} 35 //创建一个静态方法,用此方法返回对象 36 public static Singleton CreageSingleton() 37 { 38 if (_instance == null) 39 { 40 _instance = new Singleton(); 41 } 42 return _instance; 43 } 44 } 45 }
下面是效果的一个图片: