0

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

例如。每次使用一个类时创建新实例是否被认为是不好的做法?

4

2 回答 2

3

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

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

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

于 2012-06-29T22:08:33.833 回答
1

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

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

于 2012-06-29T22:01:19.957 回答