在OOP中,当涉及性能和单元测试时,最好让工厂返回,新实例或同一个实例。
EG。每次使用一个类被视为不良做法时,是创建新实例吗?
答案 0 :(得分:3)
您不希望工厂返回相同的实例。您希望它们返回新实例。这就是工厂的重点。 Singletons have no use in PHP.如果要将实例限制为仅一个实例,则创建一次并将其注入需要的位置。
在性能方面,无论您返回相同的实例还是创建新实例,它都可以忽略不计。也就是说,除非你在ctor中做了非常昂贵的工作(比如连接到数据库),否则你不应该这样做。
对于单元测试,您希望您的工厂返回新实例而不是相同实例,因为这将是全局状态。测试应该是孤立进行的,而不是先前测试的某些实例的状态,因为这更容易出错。
答案 1 :(得分:1)
返回相同的实例最适合Singleton Pattern。工厂不应该关心他们返回什么......只是它符合某些标准。
如果您的工厂正在返回数据库连接,那么最好是返回单例连接而不是创建新连接。