Singleton违反了单一责任原则吗?

时间:2015-10-15 18:30:43

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

根据Single responsibility principle

  

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

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

但是这个功能与该类的实际功能及其应该提供的内容无关。

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

1 个答案:

答案 0 :(得分:5)

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

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

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