Php 一个工厂建筑一个物体,是浪费还是不必要?

Php 一个工厂建筑一个物体,是浪费还是不必要?,php,oop,Php,Oop,我以前有 CustomerCollection extends AbstractCollection OrderCollection extends AbstractCollection etc... 但我意识到我并不真的需要它们,一个集合就可以了 我有一个CollectionFactory,它现在只构建一个对象,一个Collection 我觉得这是浪费和不必要的,但我确实喜欢使用工厂,因为它将“新”操作符排除在我的代码之外,除了在我的工厂中,这是好的,而且在我的工厂中也保留了对象创建的工作,

我以前有

CustomerCollection extends AbstractCollection
OrderCollection extends AbstractCollection
etc...
但我意识到我并不真的需要它们,一个
集合就可以了

我有一个
CollectionFactory
,它现在只构建一个对象,一个
Collection

我觉得这是浪费和不必要的,但我确实喜欢使用工厂,因为它将“新”操作符排除在我的代码之外,除了在我的工厂中,这是好的,而且在我的工厂中也保留了对象创建的工作,这是好的


你认为工厂只生产一个对象是好还是坏?

工厂只生产一个对象没有什么错。该对象只在一个地方实例化,例如,如果您更改构造函数参数,那么您只需要修改一个调用,而不是为每个实例化遍历代码。

我也遇到过同样的难题,但实际上在很多情况下它非常有用

我使用映射器模式,它依赖于对象和实体(对我来说)。我用了默认的水合器。但我改变了设计,需要另一个水合器

我可以在工厂切换水合器,一切都很好(只需要对水合器进行编码,但这超出了范围:p)


因此,我不需要更改所有代码行,只需要更改一行代码,它就可以再次工作,并且没有在文件中查找隐藏的初始化,因为所有内容都经过工厂。

在某些情况下,工厂可能很有用,如果类具有关于如何创建实例的逻辑,但您希望对它创建的实例有一些控制:让它在单元测试中创建模拟是一个常见的用例

在收集工厂的特殊情况下,我怀疑它没有那么有用。在课堂上给新同学打电话。这更容易。如果您正在编写非常通用的库代码,您可能希望对所创建的集合类型进行抽象,但是从您在问题中给出的类名来看,听起来不是这样的


当然,这是非常一般的建议,因为我不知道你的代码。你是最好的决定者,但我希望这有点帮助

这个问题可能导致不限成员名额的讨论。像这样的问题:
你觉得X怎么样?
永远不适合Q/A格式。关于主题:我看你的方法没有什么问题。