我正在尝试简洁地描述何时使用工厂,我和我的团队。我遇到了以下相关问题,这有点帮助:
基于这些链接和其他一些来源(在下面列出),我想出了以下内容:
何时使用抽象工厂模式:
解释
“我是否为每种对象类型创建工厂?这看起来过分了。”
何时不使用工厂:
参考文献:
我的问题是:我的摘要是否准确,是否有意义?有什么我忽略的吗?
提前致谢。
答案 0 :(得分:5)
我还说当你有一个你想要的特定实现时,不要使用工厂。要继续List
示例,我知道我想要ArrayList
,因为我正在进行随机访问。当我能够自己做的时候,我不想依靠工厂做到这一点。
相反,当我不想知道具体的子类时,我可以使用工厂,让它担心实际实例化哪个对象。
我想我建议你在“什么时候使用抽象工厂模式”中添加一个子弹,上面写着“你并不真正关心你得到的具体子类”,并且反对“何时不去使用工厂“。
编辑:小心避开general-purpose tool-building factory factory factory。
答案 1 :(得分:3)
通常,当您希望能够通过外部配置切换实现时使用它。
JDBC和JAXP就是很好的例子。有关更多示例,请查看this answer。
答案 2 :(得分:1)
抽象工厂模式提供了一种封装具有相互共享性的具体工厂的方法,这意味着它们实现了相同的接口/抽象类。
每当您想要控制对象的初始化时,您需要使用工厂模式,而不是将控件提供给使用者。