首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抽象工厂与工厂方法(作用域)

抽象工厂与工厂方法(作用域)
EN

Stack Overflow用户
提问于 2012-07-03 10:15:41
回答 1查看 1.6K关注 0票数 4

工厂方法是类设计模式。抽象工厂使用了许多工厂方法。为什么抽象工厂是对象设计模式,而不是类设计模式?抽象工厂将实例化推迟到哪个对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-03 10:46:22

抽象工厂模式将产品对象的创建推迟到ConcreteFactory子类。由于客户端期望工厂类(它是ConcreteFactory子类的父类)作为方法参数;根据传递的ConcreteFactory实例,将创建相应的产品实例。因此,抽象工厂通过在运行时传递的ConcreteFactory实例上调用工厂方法来创建产品实例。因此,这就是对象设计模式。通常,这些混凝土工厂都是单例的。

但是,工厂方法发生在类级别。必须创建一个新的ConcreteFactory类来实例化ConcreteProduct。这个ConcreteFactory扩展了工厂类,它有一个返回产品的create()方法。ConcreteFactory覆盖工厂父类中定义的create()方法。

在评论中:

是的,工厂方法是参数化的,但在AbstractFactory中,您将能够调用传递的ConcreteFactory上的方法,从而使您能够在运行时切换到不同的ConcreteFactory。但是在工厂中,因为create()是类的一部分,所以如果你想创建具体的产品,你必须创建扩展父工厂类的ConcreteFactory。

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

https://stackoverflow.com/questions/11303636

复制
相关文章

相似问题

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