首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >工厂创建方法总是静态的吗?

工厂创建方法总是静态的吗?
EN

Stack Overflow用户
提问于 2009-10-15 08:25:29
回答 6查看 14.3K关注 0票数 26

工厂类是静态的,工厂方法也是静态的。

设计模式一书中的GOF是否曾经规定工厂及其方法必须是静态的,才能满足模式的严格定义?

拥有工厂+/方法静态仅仅是模式的结果吗?状态数据通常不是由工厂类维护的,所以它们通常是静态的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-10-15 08:34:48

我不相信有模式的“严格定义”这样的东西。从本质上讲,模式的存在是为了捕捉软件中一次又一次出现的问题的本质,并勾勒出解决方案的可能外观。

具体地说,对于工厂模式,没有要求工厂方法是静态的。该模式的本质是您有一个对象,它负责创建另一个类的实例。如何做到这一点实际上取决于您,尽管模式中描述的一种常见方法是在类上使用静态方法。然而,我们的一个系统中有一个工厂机制,它实际上是两阶段的。您可以在类上使用静态方法来创建工厂对象,可以将其配置为在一组实现之间进行选择,然后使用工厂对象来标记完成实际工作所需的对象实例。

还要考虑工厂模式在没有静态方法的语言中的实现。例如,在Scala中,您将使用对象而不是类。尽管它的行为非常类似于在Java中的类上使用静态方法,但实现的性质却截然不同。

票数 26
EN

Stack Overflow用户

发布于 2009-10-15 08:31:15

不,工厂可以保持状态。这取决于需要什么。

我建议,在第一个实例中,静态测试似乎是一个不错的选择--当你试图测试静态测试时,你往往会遇到问题。

避开他们,直到你特别需要他们。

票数 11
EN

Stack Overflow用户

发布于 2009-10-15 08:34:00

不,默认情况下工厂类不应该是静态的。实际上,静态类在OOP世界中是不受欢迎的,因为它们也可以传达一些状态,从而引入全局应用程序状态。如果你只需要一个工厂对象,你可以通过单例模式来控制它的创建。

工厂方法的情况下-可以保持它是静态的(实际上没有其他合理的方法:)。

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

https://stackoverflow.com/questions/1571020

复制
相关文章

相似问题

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