首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与工厂方法模式和抽象工厂模式相比,简单工厂模式的缺点是什么?

与工厂方法模式和抽象工厂模式相比,简单工厂模式的缺点是什么?
EN

Stack Overflow用户
提问于 2019-06-12 18:26:13
回答 2查看 2.1K关注 0票数 3

头第一设计模式将简单工厂描述为

代码语言:javascript
运行
复制
public class SimplePizzaFactory {
    public Pizza createPizza(String type) {
        Pizza pizza = null;
        if (type.equals(“cheese”)) {
            pizza = new CheesePizza();
        } else if (type.equals(“pepperoni”)) {
            pizza = new PepperoniPizza();
        } else if (type.equals(“clam”)) {
            pizza = new ClamPizza();
        } else if (type.equals(“veggie”)) {
            pizza = new VeggiePizza();
        }
        return pizza;
    }
}

与工厂方法模式和抽象工厂模式相比,简单工厂模式的缺点是什么?

在Gamma等人的“设计模式”( Design )中,工厂方法模式中的类参数化工厂方法似乎与简单工厂相似。参数化抽象工厂完全是简单工厂,这是正确的吗?设计模式提到了参数化抽象工厂吗?

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 20:52:05

与工厂方法模式和抽象工厂模式相比,简单工厂模式的缺点是什么?

将工厂方法模式与抽象工厂模式进行比较并不完全正确,因为它们服务于不同的目的。工厂方法只是创建一个对象,而抽象工厂模式定义了一个接口,您可以通过这个接口创建一系列对象。如果我没记错的话,你正在读的书中都有描述。

回到简单工厂与工厂方法的缺点:当谈论设计模式时,总是一个问题,以及如何将它们应用于您的特定问题,这取决于每个案例。

要创建的每个对象类型都有一个工厂类,这会增加代码的复杂性,而且每个对象家族都会在附近有一个工厂类,因此很快代码就会与factory类一起爆炸。这是我所知道的唯一的缺点,如果使用正确的模式。当然,另一方面,工厂方法也有其缺点。在选择两者之间时,我总是问自己谁是代码的客户端,以及他更容易使用的是什么。

在Gamma等人的“设计模式”( Design )中,工厂方法模式中的类参数化工厂方法似乎与简单工厂相似。参数化抽象工厂完全是简单工厂,这是正确的吗?设计模式提到了参数化抽象工厂吗?

不完全是这样,但是AbstractFactory的具体工厂实现看起来确实像简单的工厂。

我建议你也看其他文章,我个人的喜好是佐兰的文章和抽象工厂的讲座。参见这里的示例:http://codinghelmet.com/articles/cascading-abstract-factories

票数 1
EN

Stack Overflow用户

发布于 2021-04-03 19:32:53

simple是一个类的工厂类,该类具有一个创建方法,其中有一个大的条件,即基于方法参数选择要实例化的产品类(simple不是设计模式)。

简单工厂的例子:

代码语言:javascript
运行
复制
class UserFactory {
public static function create($type) {
    switch ($type) {
        case 'user': return new User();
        case 'customer': return new Customer();
        case 'admin': return new Admin();
        default:
            throw new Exception('Wrong user type passed.');
    }
}

}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档