分享

C#设计模式: 单例模式

 小斑书阁 2020-02-28
  1. 单例模式

    是保证整个程序中,

    某个类,只构造一次,

    比如打印机类,

    构造一次打印机类比较费时间,

    构造多个也没有意义,

    因为操作的都是同一台打印机。

    下面我们动手实现,

    如下图,创建控制台应用程序。

    设计模式:C#如何实现单例模式
  2. 2
  3. 要确保某个类只能构建一次,

    就要限制外部使用New操作符,创建变量。

    那么如何限制使用New操作符呢

    把构造器方法设置为Private。

    这是实现单例模式的第一板斧。

    添加SingleClass方法,构造器设为Private。

    如下图:

    设计模式:C#如何实现单例模式
  4. 3
  5. 那么问题来了,

    构造器Pirvate,外部不能New,

    那么这个类怎么使用呢。

    第二板斧来啦,提供一个Static方法。

    同学们都知道Static方法,不需要构建类。

    直接用类名就可以调用。

    用该方法返回一个SingleClass类。

    如下图:

    设计模式:C#如何实现单例模式
  6. 4
  7. 下面是第三板斧:

    如何保证只构建一次呢,

    按照上面的GetInstance方法的写法,

    调一次改方法,就New一个SingleClass类。

    解决方法是:

    在类中定义一个SingleClass类型的变量,

    用Private关键字修饰,

    每次调用GetInstance方法时,

    判断SingleClass类型的变量是否为空,

    不为空就直接返回,

    为空就new一个。

    这样说,同学们肯定晕了。

    下面直接看代码:

    设计模式:C#如何实现单例模式
  8. 5
  9. 下面我们加一些调试代码,

    验证SingleClass是不是只被构造了一次。

    如下图:

    设计模式:C#如何实现单例模式
    设计模式:C#如何实现单例模式
  10. 6
  11. 运行程序,

    可以看到构造方法,

    只被调用了一次。

    设计模式:C#如何实现单例模式
  12. 7
  13. 按照惯例,总结一下。

    要实现单例模式,需要三板斧。

    第一:把构造函数私有化。

    第二:提供Static方法,返回类类型的变量。

    第三:通过私有的类类型变量,判断是否需要New。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多