工厂vs抽象工厂设计模式

Bre*_*ead -1 .net c# design-patterns

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

感谢名单

Enr*_*lio 8

一个抽象工厂的目标是创造相关的对象组.抽象工厂的界面通常包含许多工厂方法,每个工厂方法对应于要创建的每种类型的对象.

这是一个抽象工厂的例子:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

相关资源:


mat*_*rix 5

工厂模式"定义用于创建对象的接口,但让子类决定实例化哪个类.Plant方法允许类将实例化延迟到子类".

抽象工厂模式的位置"提供用于创建相关或依赖对象族的接口,而不指定其具体类".

您可以将抽象模式视为工厂的工厂.正如@deadalnix所说,它可以让你选择合适的工厂.有关更多详细信息,请阅读以下链接:

  1. 维基百科上的工厂模式
  2. 维基百科上的抽象工厂模式

Factory Method模式是类上的方法,用于构建其他实例.您可以在几乎任何恰好在当时使用的类上实现Factory方法.

抽象工厂模式是关于创建一个除了工厂方法之外没有任何东西(感兴趣)的类.当您需要创建一组不同但匹配的对象时,或者如果控制对象创建的行为上升到成为类的主要功能时,请使用抽象工厂.