根据单一职责原则:
每个类都应该对软件提供的功能的一个单独部分负责。
单例防止创建多个类实例,为其提供全局访问。
但这个功能与类的实际功能和它应该提供的功能没有任何关系。
这是否意味着Singleton模式违反了SRP?
每个类都应该对软件提供的功能的一个单独部分负责。
单例防止创建多个类实例,为其提供全局访问。
但这个功能与类的实际功能和它应该提供的功能没有任何关系。
这是否意味着Singleton模式违反了SRP?
大多数情况下,短答案是NO(不需要单例模式)。但具体情况取决于单例实现的方式。
单一职责原则意味着一个类应该只执行一个任务而不是多个与彼此无关的任务。因为如果一个类执行多个任务,在需求改变时,可能会破坏其他功能。这就是为什么建议一个类只执行一个任务/功能。
单例模式用于限制只创建一个对象。这与类功能无关。通常使用单例模式来避免创建重复的类实例,如DB连接。单例确保每个线程或类都使用相同的一致对象,并且不需要同步。