C# 中的 Singleton 类为何被密封?2025年2月5日 | 阅读5分钟 为何需要 Singleton 设计模式?
C# 中的 Singleton 类为何被密封?为了确保一个类只能存在一个实例并防止它们被继承,C# 中的 Singleton 类通常被声明为“密封”。当一个类被密封时,它就不能被其他类继承,这可以防止任何人创建子类并可能引入 Singleton 的多个实例。 让我们通过一个例子来探讨 C# 中的 Singleton 类为何被密封。 首先,不使用 `sealed` 关键字来构造 Singleton 类。 此时,您将收到以下编译错误。由于其保护级别,“Singleton.Singleton()”无法访问。 Singleton 类中的私有构造函数导致了上述问题。您可能想知道,为什么 Singleton 类需要 `sealed` 关键字,因为由于类的私有构造函数,它很难被继承。 C# 中的嵌套类是什么?在 C# 中,将一个类定义在另一个类内部所产生的内部优雅被称为嵌套类或内部类。现在,如果我们编译这个程序,就可以停止收到错误。 让我们修改 Program 类的 Main 方法来访问嵌套类。 结果清楚地表明,私有构造函数运行了两次,创建了 Singleton 类的多个实例。计数器的值已增加到 2。因此,通过删除 `sealed` 关键字,我们可以继承 Singleton 类并创建它的多个实例。然而,这破坏了 Singleton 设计原则。如下所示,让我们密封 Singleton 类。然后,让我们编译程序并观察会发生什么。 在程序编译过程中,我们遇到了一个错误,表明我们无法从一个密封类派生。因此,我们可以推断 `sealed` 关键字在 C# 中将阻止类继承,而私有构造函数将帮助我们阻止对类的任何外部实例化。 上述 Singleton 实现不是线程安全的。Singleton 类的实现使得 `if (instance == null)` 条件能够被两个不同的线程同时评估并确定为 true。它们都会创建违反 Singleton 设计原则的实例。 为什么 C# 中的 Singleton 类通常被密封?以下是 C# 中 Singleton 类通常被密封的几个原因:
将类声明为密封可确保遵循 Singleton 模式并且不能被继承。由于在程序生命周期中只有一个类的实例,开发人员会发现它更容易使用,并且知道其行为是恒定的。 当然!让我们更深入地探讨密封 Singleton 类的重要性以及它如何影响该类只有一个实例的保证。
总而言之,密封 C# Singleton 类是一种最佳实践,它强调了控制、线程安全和封装的概念——所有这些对于成功实现 Singleton 模式都至关重要。 结论总之,密封 C# Singleton 类是一项基本过程,它支持维护 Singleton 模式的完整性。它通过禁止子类化来确保在程序整个生命周期中只有一个类的实例。这种实例化控制可以提高线程安全性,简化实现,并有助于封装。 密封类是构建可靠且可维护软件系统的基本组成部分,因为它重申了 Singleton 模式的关键思想,即保证单个实例的生成并提供对该实例的全局访问。 |
我们请求您订阅我们的新闻通讯以获取最新更新。