为什么要使用抽象工厂

Why use an abstract factory

试图找出工厂和抽象工厂之间的区别。

据我所知,当我想创建具有相同属性但类型不同的对象时,我会使用工厂(例如 - 我想要 10 匹马,体重、身高和年龄都相同,但它们应该不同在名字中)。

所以我创建了一个接口(或者可能是抽象的 class?),它已经处理了体重、身高和年龄,并且在我想创建一匹新马时只用名字喂养它。

假设我想给马匹添加颜色 属性。这是使用抽象工厂的好理由吗?我将获得 2 个工厂 - 一个用于黑马,一个用于棕色马。有什么意义吗?

抽象工厂模式围绕着创建一个工厂来构建其他工厂。因此,当您知道自己想要构建例如马、牛,也许还有猪和羊以遵循您的类比时,您宁愿使用它。鉴于它们都是农场动物,它们可能会共享很多属性,因此它们的工厂在某种意义上应该是相似的,因此您可以创建一个工厂的工厂来生产骨架 "farm animal factory"。

从这里你现在可以生产马厂、牛厂和任何你需要的东西。

所以基本上它是进一步抽象工厂概念,这样您就可以使用模板方式不仅创建对象,还创建将生产它们的工厂...