design-patterns - Singleton 是否违反了单一职责原则?

标签 design-patterns singleton single-responsibility-principle

根据Single responsibility principle :

Every class should have responsibility over a single part of the functionality provided by the software



单例防止创建一个类的多个实例,提供对它的全局访问。

但是这个功能与类的实际功能以及它应该提供的功能没有任何关系。

这是否意味着单例模式违反了 SRP ?

最佳答案

大多数情况下,简短的回答是否定的。同样,它可以取决于单例的实现。

单一责任意味着一个类应该只做一个任务,而不是多个相互不相关的任务。因为如果类正在执行多个任务并且需求发生任何变化,也会破坏任务的其他功能。这就是为什么总是建议一个类应该只执行一个任务/功能。

单例 用于限制只创建一个对象。这与类功能无关。通常使用 Singleton 来避免创建类的繁重多个实例,如 DB 连接。单例确保每个线程或类将使用相同的一致对象并且不需要同步。

关于design-patterns - Singleton 是否违反了单一职责原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155928/

相关文章:

oop - 每个 Facade 都应该作为 Singleton 实现吗?

java - Hazelcast 客户端单例

model-view-controller - 建议不使用 Controller 基类的 MVC 框架

java - 如何以及何时在 Java 中使用 Kotlin 密封类?

ruby - BasicObject 的 singleton_class 的父类(super class)如何以及为什么是 Ruby 中的 Class 类?

c# - 建议零售价 : Why use instance field values instead of parameters?

Python 类,如何明智地使用它们,以及单一职责原则

oop - 信息专家和告诉不要问与单一职责原则不一致吗?

c++ - 是否有可能有一个基类方法调用所有派生类的相同(但被覆盖的方法)?

java - JList 和 ListModel 设计模式建议