Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 工厂vs抽象工厂设计模式_C#_.net_Design Patterns - Fatal编程技术网

C# 工厂vs抽象工厂设计模式

C# 工厂vs抽象工厂设计模式,c#,.net,design-patterns,C#,.net,Design Patterns,我在看设计模式,但混淆了工厂模式和抽象工厂模式。请任何人解释一下什么时候采用哪种模式的区别 Thanx抽象工厂不建造任何东西。它只是选择正确的工厂,让它建造一些东西 从外面看,它像一个标准的工厂,可以用同样的方式 它允许您在过程中通过几个阶段构建对象。抽象工厂不构建任何东西。它只是选择正确的工厂,让它建造一些东西 从外面看,它像一个标准的工厂,可以用同样的方式 工厂模式定义了一个用于创建对象的接口,但让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类 其中,作为抽象工厂模式提供了一个接口,

我在看设计模式,但混淆了工厂模式和抽象工厂模式。请任何人解释一下什么时候采用哪种模式的区别


Thanx

抽象工厂不建造任何东西。它只是选择正确的工厂,让它建造一些东西

从外面看,它像一个标准的工厂,可以用同样的方式


它允许您在过程中通过几个阶段构建对象。

抽象工厂不构建任何东西。它只是选择正确的工厂,让它建造一些东西

从外面看,它像一个标准的工厂,可以用同样的方式


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

其中,作为抽象工厂模式提供了一个接口,用于创建相关或从属对象的族,而无需指定它们的具体类

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

工厂方法模式是类上的方法,用于构建 其他情况。您可以在几乎任何一个应用程序上实现工厂方法 类,该类在当时正好很方便

抽象工厂模式是关于创建一个具有 除了它的工厂方法之外,没有其他有趣的东西。当需要创建一组不同但匹配的对象时,请使用抽象工厂,或者 如果控制对象创建的行为上升到存在的程度
类的主要功能。

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

其中,作为抽象工厂模式提供了一个接口,用于创建相关或从属对象的族,而无需指定它们的具体类

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

工厂方法模式是类上的方法,用于构建 其他情况。您可以在几乎任何一个应用程序上实现工厂方法 类,该类在当时正好很方便

抽象工厂模式是关于创建一个具有 除了它的工厂方法之外,没有其他有趣的东西。当需要创建一组不同但匹配的对象时,请使用抽象工厂,或者 如果控制对象创建的行为上升到存在的程度 类的主要功能。

抽象工厂旨在创建相关对象的组。抽象工厂的接口通常包含多个,每种类型的对象创建一个

以下是一个示例:

相关资源:

抽象工厂旨在创建相关对象的组。抽象工厂的接口通常包含多个,每种类型的对象创建一个

以下是一个示例:

相关资源:


现实生活中的例子。易记

工厂

想象你正在建造一座房子,你走近一个木匠要一扇门。你给了门的尺寸和你的要求,他会为你建造一扇门。在这种情况下,木匠是一个门工厂。您的规格是工厂的输入,而门是工厂的输出或产品

抽象工厂

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


现实生活中的例子。易记

工厂

想象你正在建造一座房子,你走近一个木匠要一扇门。你给了门的尺寸和你的要求,他会为你建造一扇门。在这种情况下,木匠是一个门工厂。您的规格是工厂的输入,而门是工厂的输出或产品

抽象工厂

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


重复几次:可能重复:stackoverflow.com/questions/4719822/…stackoverflow.com/questions/2079902/…stackoverflow.com/questions/1001767/…是的,我看到了,但我的问题是何时遵循哪种模式??请在否决投票时添加评论:
,我看不出这个问题有什么不对劲吗?只是它可能与其他类似问题重复?最好是回答这个问题,而不是否决它:在其他问题上有这么多好的答案,其中许多提供了何时遵循每个模式的指导,重复了几次:可能的重复:stackoverflow.com/questions/4719822/…stackoverflow.com/questions/2079902/…stackoverflow.com/questions/1001767/…是的,我看到了,但我的问题是何时遵循哪种模式??请在否决投票时添加评论:,我不知道这个问题有什么不对吗?只是它可能与其他类似问题重复?最好回答这个问题,而不是否决它:在其他问题上有很多很好的答案,其中许多都提供了何时遵循每个问题的指导
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();
    }
}