【问题标题】:Does Singleton violate the single responsibility principle?Singleton 是否违反了单一责任原则?
【发布时间】:2015-10-15 18:30:42
【问题描述】:

根据Single responsibility principle

每个班级都应该负责 软件提供的功能

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

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

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

【问题讨论】:

  • 不,但这不是单身人士不受欢迎的原因。
  • 实例控制与功能正交。

标签: design-patterns singleton single-responsibility-principle


【解决方案1】:

在大多数情况下,简短的回答是否定的。同样,它可以依赖于 Singleton 的实现。

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多