我有一个基本的问题:
当我开发PHP时,我经常想,什么时候使用exampleclass::getInstance()
是合理的以及何时使用new exampleclass()
我应该在什么时候使用哪一个?它们之间最大的区别是什么?我只是想从这个问题中得到"最佳实践"。
谢谢你的帮助!
实现getInstance()
方法的类通常是单例的。在这种情况下,基本上不应该使用new exampleclass()
。(实际上,直接调用构造函数是不允许的。)
单例模式假定在程序的生命周期内其类最多存在一个实例。如果有更多的实例,它们可能会相互冲突,这将导致一些丑陋的问题。例如,单例可以访问一些全局可用的函数或方法,或者打开到另一个模块或另一个网络位置的连接。如果两个实例在不知道彼此的情况下写入相同的变量,系统可能会进入不知道如何继续工作的状态
通常,getInstance()
用于Singleton模式的情况下,即当您需要始终使用相同的对象实例时。在这种情况下,getInstance
通常只在第一次调用时调用私有构造函数。
new ExampleClass()
将在每次调用时创建一个该类的新实例。