PHP:返回新实例与返回相同的实例


PHP: returning new instance vs returning the same instance

在OOP中,当涉及到性能和单元测试时,PHP女巫最好让工厂返回,新实例或相同的实例。

例如,每次使用类时创建新实例是否被视为不良做法?

您不希望工厂返回相同的实例。您希望他们返回新实例。这就是工厂的意义所在。单例在 PHP 中没有用处。如果要将实例限制为仅一个实例,请创建一次实例并将其注入到需要的位置。

在性能方面,无论您是返回相同的实例还是创建新实例,都可以忽略不计。也就是说,除非您在 ctor 中执行非常昂贵的工作(例如连接到数据库),否则您无论如何都不应该这样做。

对于单元测试,您希望工厂返回新的实例而不是相同的实例,因为这将是全局状态。测试应该隔离进行,而不是在先前测试中的某个实例的状态仍然存在的情况下进行,因为这更容易出错。

返回相同的实例最适合单例模式。工厂不应该关心他们返回的是什么......只是它符合某些标准。

如果您的工厂返回数据库连接,则最好返回单一实例连接,而不是创建新连接。