设计模式:C#如何实现单例模式

2025-10-09 23:10:12

1、单例模式

是保证整个程序中,

某个类,只构造一次,

比如打印机类,

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

构造多个也没有意义,

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

下面我们动手实现,

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

设计模式:C#如何实现单例模式

2、要确保某个类只能构建一次,

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

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

把构造器方法设置为Private。

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

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

如下图:

设计模式:C#如何实现单例模式

3、那么问题来了,

构造器Pirvate,外部不能New,

那么这个类怎么使用呢。

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

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

直接用类名就可以调用。

用该方法返回一个SingleClass类。

如下图:

设计模式:C#如何实现单例模式

4、下面是第三板斧:

如何保证只构建一次呢,

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

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

解决方法是:

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

用Private关键字修饰,

每次调用GetInstance方法时,

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

不为空就直接返回,

为空就new一个。

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

下面直接看代码:

设计模式:C#如何实现单例模式

5、下面我们加一些调试代码,

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

如下图:

设计模式:C#如何实现单例模式

设计模式:C#如何实现单例模式

6、运行程序,

可以看到构造方法,

只被调用了一次。

设计模式:C#如何实现单例模式

7、按照惯例,总结一下。

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

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

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢