2015-12-21 103 views
0

试图找出工厂和抽象工厂之间的区别。为什么要使用抽象工厂

从我所了解的情况来看,当我想创建具有相同属性但类型不同的对象时,我会使用一个工厂(例如 - 我想要有10匹马,具有相同的重量,高度和年龄,但它们应该在名称)。

因此,我创建了一个接口(或者可能是抽象类?),它已经处理了重量,高度和年龄,并且在我想创建一匹新马的时候给它提供名称。

假设我想为马添加颜色属性。这是使用抽象工厂的一个很好的理由吗?我会得到2个工厂 - 一个是黑马,另一个是棕马。它有任何意义吗?

回答

1

抽象工厂模式围绕创建一个工厂,建立其他工厂。所以当你有一个场景,你知道你想要构建马匹,奶牛和MAYBE还有猪和羊来跟随你的比喻时,你宁愿使用它。鉴于他们都是农场动物,他们可能会分享很多财产,因此他们的工厂在某种意义上应该是相似的,所以你可以创建一个工厂工厂来生产一个骨架“农场动物工厂”。

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

因此,基本上它进一步抽象了工厂的概念,以便您可以使用模板方式创建不仅对象,但会产生它们的工厂...