什么时候使用getInstance/new class()是合理的?(PHP)


When is it reasonable to use getInstance/new class()? (PHP)

我有一个基本的问题:

当我开发PHP时,我经常想,什么时候使用exampleclass::getInstance()是合理的以及何时使用new exampleclass()

我应该在什么时候使用哪一个?它们之间最大的区别是什么?我只是想从这个问题中得到"最佳实践"。

谢谢你的帮助!

实现getInstance()方法的类通常是单例的。在这种情况下,基本上不应该使用new exampleclass()。(实际上,直接调用构造函数是不允许的。)

单例模式假定在程序的生命周期内其类最多存在一个实例。如果有更多的实例,它们可能会相互冲突,这将导致一些丑陋的问题。例如,单例可以访问一些全局可用的函数或方法,或者打开到另一个模块或另一个网络位置的连接。如果两个实例在不知道彼此的情况下写入相同的变量,系统可能会进入不知道如何继续工作的状态

通常,getInstance()用于Singleton模式的情况下,即当您需要始终使用相同的对象实例时。在这种情况下,getInstance通常只在第一次调用时调用私有构造函数。

new ExampleClass()将在每次调用时创建一个该类的新实例。