单例模式
单例模式
单例模式的目的是为了让一个类只有一个实例.为了实现这个效果,我们需要控制类实例化的入口,那么,就需要自己实现方法,来控制类的实例化了.
1\类实例化一般有两种情况,一种是直接使用构造函数,另一种是使用静态方法.这里,我们可以封装一个静态方法,把实例化的入口控制住
2\实例化的入口控制住之后,我们要做的就是保证每次实例化都是同一个对象
具体实现如下:
namespace SingleModeSecond { public class SingleModeClass { //定义一个私有字段,存放类对象 private static SingleModeClass single; //一个对象,用来在多线程中保证实例的唯一性 private static readonly object lockObj = new object(); //将构造函数设置为私有,这样就关闭了使用构造函数实例化对象的入口 private SingleModeClass() { } //使用一个静态方法来创建类实例,现在类实例化的方法有我们控制了 public static SingleModeClass CrateInstanceSingleModeClass() { //现在要实例化对象了,如果对象已经被实例化了,那么直接返回这个对象, //如果对象还未被实例化,那么调用构造函数,实例化对象 if (single==null) { //在多线程中,如果两个线程同时创建对象,而此时single又为null,那么这样就会执行两次构造函数, //产生两个独享了,这里我们定义一个对象,对他加锁,这样就可以保证多线程下的唯一对象了. lock (lockObj) { if(single==null) single = new SingleModeClass(); } } return single; } } }