根据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/