第一次接触单例模式还是在我学习ios的时候用oc来实现的单例模式。那时候学的也是乱糟糟的。我刚开始以为C# 是没有单例模式的,后来看了好多东西才发现原来C#也有单例模式。
单例模式顾名思义,就是在整个程序生命周期中有且仅有一个实例。那么在C#中怎么实现呢?
C#中实现单例模式其实很简单要考两样东西,私有构造函数、和static的对象。
下面代码示例了一个简单的单例模式的一个类。
public class SingleClass { private static SingleClass _sigle = null; /// <summary> /// 私有化构造函数 /// </summary> private SingleClass() { } public static SingleClass GetInstance() { if (sigle == null) { _sigle = new SingleClass(); } return _sigle; } }
看了代码那么我们来理一理思路。
1、通过私有构造函数来防止通过new来创建该类的对象。
2、通过私有字段_sigle来存储该类的对象。
3、通过共有静态方法GetInstance来获取到这个类的对象。
这个GetInstance其实也很简单他会先判断私有字段_sigle是否已经存储了这个类的对象如果是则直接返回这个对象如果不是则new一个新对象并赋值给字段_sigle。
也许大家会说为什么这里可以new呢?很简单这里是在这个类的内部也就是可以调用这个类的私有构造函数。
大家知道静态字段、属性和方法都是属于类的在整个程序的生命周期内斗是存在的所以_sigle只能被赋值一次也就实现了整个应用程序生命周期内该类只能创建一次实例的目的。