Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Design patterns 工厂方法模式的适用性_Design Patterns_Factory Method - Fatal编程技术网

Design patterns 工厂方法模式的适用性

Design patterns 工厂方法模式的适用性,design-patterns,factory-method,Design Patterns,Factory Method,我对工厂方法模式感到困惑 以下代码来自“https://www.oodesign.com/factory-method-pattern.html" 这就是我困惑的地方: Creator creator = new ConcreteCreator(); 在该站点中,我们将此模式应用于两种情况 当一个类不能预测它应该创建的对象的类型时 当一个类希望它的子类是指定新创建对象类型的子类时 但是在客户端代码中,我们将“new”keword与concreator放在一起(我知道这是混凝土产品的混凝土工厂)

我对工厂方法模式感到困惑

以下代码来自“https://www.oodesign.com/factory-method-pattern.html"

这就是我困惑的地方:

Creator creator = new ConcreteCreator();
在该站点中,我们将此模式应用于两种情况

  • 当一个类不能预测它应该创建的对象的类型时
  • 当一个类希望它的子类是指定新创建对象类型的子类时
  • 但是在客户端代码中,我们将“new”keword与concreator放在一起(我知道这是混凝土产品的混凝土工厂)

    这不意味着客户确切地知道他/她需要创建什么类型的对象吗


    有人能帮我吗?

    在工厂方法模式中,
    客户机的角色是向抽象的
    创建者提供具体的
    产品

    当抽象
    创建者
    生活在第三方库中,并且每个
    客户机
    都需要通过实现自己的子类来提供
    产品时,这一点最有意义。在这个场景中,
    客户机
    正在实现一个它不拥有的抽象

    如果工厂方法需要创建多个子类(即多个
    产品
    s),则即使当
    客户机
    拥有抽象时,工厂方法也很有用


    如果
    客户机
    拥有抽象,并且只有一个
    产品

    是的,客户机知道他想要创建什么具体类型(应该在代码中的某个地方做出这个决定),那么工厂方法就没有意义了。界面
    Creator
    是一个关于如何创建产品的合同。从那时起,如果我们在具体的Creator中更改一些代码,比如,我们要求客户在这里输入一个参数,我们仍然需要更改客户代码。那么,在我们的程序中使用这种模式和只使用“new”关键字制作东西有什么区别呢?因为看起来使用这种模式没有什么好处。。。
    Creator creator = new ConcreteCreator();