工厂vs抽象工厂设计模式

时间:2011-06-20 10:37:57

标签: c# .net design-patterns

我在看设计模式,但在Factory和抽象工厂模式之间感到困惑。任何人都可以解释在何时遵循哪种模式的差异。

感谢名单

4 个答案:

答案 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所说,它可以让你选择合适的工厂。有关更多详细信息,请阅读以下链接:

  1. Factory Pattern on Wikipedia
  2. Abstract Factory Pattern on Wikipedia
  3. Factory Method模式是类的方法,用于构建 其他情况。您几乎可以实现任何工厂方法 那个恰好在当时很方便的课程。

    抽象工厂模式是关于创建一个具有的类 除了工厂方法之外没什么(有意义的)。 当您需要创建一组不同但匹配的对象时使用抽象工厂,或 如果控制对象创造的行为上升到存在的程度 班级的主要功能。

答案 2 :(得分:2)

抽象工厂没有构建任何东西。它只是选择合适的工厂并使其构建一些东西。

从外面看,它看起来像一个标准工厂,可以使用相同的方式。

它允许您在此过程中构建具有多个阶段的对象。

答案 3 :(得分:0)

真实生活的例子。 (容易记住)

<强>工厂

想象一下,你正在建造一所房子,然后你会接近一个木匠的门。你给出了门和你的要求的测量,他将为你建造一扇门。在这种情况下,木匠是门的工厂。您的规格是工厂的输入,门是工厂的输出或产品。

抽象工厂

现在,考虑门的相同例子。你可以去木匠,或者你可以去塑料门店或PVC商店。他们都是门工厂。根据具体情况,您可以决定需要接近哪种工厂。这就像一个抽象工厂。

http://www.dofactory.com/topic/1590/factory-pattern-vs-abstract-factory-pattern.aspx