所有类中的单例模式

时间:2018-11-14 20:40:37

标签: javascript php oop

我有一个很快的问题。 我正在和我的朋友讨论Singleton模式。 他们说在所有课程中都不好用,我有不同的看法。 这是真的吗,为什么重要的是不要在所有类中都使用它? 对我来说完全是无稽之谈。模式用于防止多重实例化。有什么问题吗?

1 个答案:

答案 0 :(得分:1)

天真单例的主要“问题”是它使用静态访问器。当在其上使用属性或方法时,这迫使您按类名称引用单例。这称为实现编码(与coding to the interface相反)。随着体系结构的增长,它否定了最有用的间接点之一:如果在应用程序周围的许多地方使用单例,则最终会分散类名。如果您声明了一个接口并改用了该接口,并且想在以后更改类名,则只需修改实例化实现的单行代码即可。

在进行测试时,对接口进行编码尤为重要,因为经常需要将生产实现换成测试实现,以便您可以隔离客户端类的行为。

您仍然可以使用单例。但是您应该将其隐藏在接口后面,以便所有客户端都不需要知道它是单例。为此,请使用dependency injection