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

时间:2012-06-29 21:58:14

标签: php class instance

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

EG。每次使用一个类被视为不良做法时,是创建新实例吗?

2 个答案:

答案 0 :(得分:3)

您不希望工厂返回相同的实例。您希望它们返回新实例。这就是工厂的重点。 Singletons have no use in PHP.如果要将实例限制为仅一个实例,则创建一次并将其注入需要的位置。

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

对于单元测试,您希望您的工厂返回新实例而不是相同实例,因为这将是全局状态。测试应该是孤立进行的,而不是先前测试的某些实例的状态,因为这更容易出错。

答案 1 :(得分:1)

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

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