抽象工厂设计模式的缺点是什么



像往常一样,为了构建具有不同设计模式的项目,架构师总是更喜欢该特定设计模式的有利视图。但有时它需要了解违规区域和未来项目扩展方面的劣势。我现在正在使用抽象工厂设计模式。我理解它,但无法弄清楚它的缺点,它的局限性,它会在哪里失败。有人可以解释一下抽象工厂设计模式的另一种观点吗?

首先,对于任何设计模式,您都会添加更多的抽象层和复杂性,因此只有在没有它的痛苦明显时才应用该模式。这与Bob Martin的"拿下第一颗子弹"和Nathan Marz的"Pain-Oriented Programming"类似。

特别是对于抽象工厂,关于使用哪个工厂的决定是在运行时做出的。通常,这是在一些代码中完成的,这些代码专用于通过基于某些关键信息的条件分支来提供正确的工厂。这意味着随着更多工厂的创建,必须修改这个中心决策点。这很烦人。

最后,如果对一个工厂的任何基础细节有任何更改,则可能需要修改所有工厂的接口。这会破坏客户端。因此,像往常一样,请非常小心地选择接口。

最新更新