我在看设计模式,但在Factory和抽象工厂模式之间感到困惑。任何人都可以解释在何时遵循哪种模式的差异。
感谢名单
答案 0 :(得分:8)
抽象工厂旨在创建相关对象组。抽象工厂的接口通常包含多个Factory Methods,每个类型的对象都要创建一个。{/ p>
以下是Abstract Factory:
的示例public abstract class AnimalFactory
{
public abstract Animal CreateFish();
public abstract Animal CreateBird();
public abstract Animal CreateMammal();
}
public class AfricanAnimalFactory : AnimalFactory
{
public override Animal CreateFish()
{
return new Reedfish();
}
public override Animal CreateBird();
{
return new Flamingo();
}
public override Animal CreateMammal();
{
return new Lion();
}
}
相关资源:
答案 1 :(得分:5)
工厂模式“定义用于创建对象的接口,但让子类决定实例化哪个类.Plant方法允许类将实例化延迟到子类”。
抽象工厂模式“提供用于创建相关或依赖对象族的接口而不指定其具体类”。
您可以将抽象模式视为工厂的工厂。正如@deadalnix所说,它可以让你选择合适的工厂。有关更多详细信息,请阅读以下链接:
Factory Method模式是类的方法,用于构建 其他情况。您几乎可以实现任何工厂方法 那个恰好在当时很方便的课程。
抽象工厂模式是关于创建一个具有的类 除了工厂方法之外没什么(有意义的)。 当您需要创建一组不同但匹配的对象时使用抽象工厂,或 如果控制对象创造的行为上升到存在的程度 班级的主要功能。
答案 2 :(得分:2)
抽象工厂没有构建任何东西。它只是选择合适的工厂并使其构建一些东西。
从外面看,它看起来像一个标准工厂,可以使用相同的方式。
它允许您在此过程中构建具有多个阶段的对象。
答案 3 :(得分:0)
真实生活的例子。 (容易记住)
<强>工厂强>
想象一下,你正在建造一所房子,然后你会接近一个木匠的门。你给出了门和你的要求的测量,他将为你建造一扇门。在这种情况下,木匠是门的工厂。您的规格是工厂的输入,门是工厂的输出或产品。
抽象工厂
现在,考虑门的相同例子。你可以去木匠,或者你可以去塑料门店或PVC商店。他们都是门工厂。根据具体情况,您可以决定需要接近哪种工厂。这就像一个抽象工厂。
http://www.dofactory.com/topic/1590/factory-pattern-vs-abstract-factory-pattern.aspx