像往常一样构建具有不同设计模式的项目,建筑师总是喜欢该特定设计模式的有利视图。但有时需要了解在未来项目扩展方面违规区域和缺点应该是什么。我现在用的是抽象工厂设计模式。我理解它但无法弄清楚它的缺点,它的局限性,它会失败的地方。有人可以解释一下抽象工厂设计模式的另一种观点吗?
答案 0 :(得分:4)
首先,对于任何设计模式,您都会添加更多层次的抽象和复杂性,因此只有在没有明显的痛苦时才应用该模式。这与Bob Martin的“拿第一颗子弹”和Nathan Marz的“Suffering-Oriented Programming”类似。
特别是对于Abstract Factory,决定在运行时使用哪个工厂。通常,这是在一些代码中完成的,这些代码专用于通过基于某些关键信息的条件分支来提供正确的工厂。这意味着当创建更多工厂时,必须修改此中央决策点。这很烦人。
最后,如果对一个工厂的任何底层细节有任何更改,则可能需要为所有工厂修改该接口。这打破了客户。像往常一样,要非常谨慎地选择接口。