工厂类是静态的,工厂方法也是静态的。
设计模式一书中的GOF是否曾经规定工厂及其方法必须是静态的,才能满足模式的严格定义?
拥有工厂+/方法静态仅仅是模式的结果吗?状态数据通常不是由工厂类维护的,所以它们通常是静态的。
发布于 2009-10-15 08:34:48
我不相信有模式的“严格定义”这样的东西。从本质上讲,模式的存在是为了捕捉软件中一次又一次出现的问题的本质,并勾勒出解决方案的可能外观。
具体地说,对于工厂模式,没有要求工厂方法是静态的。该模式的本质是您有一个对象,它负责创建另一个类的实例。如何做到这一点实际上取决于您,尽管模式中描述的一种常见方法是在类上使用静态方法。然而,我们的一个系统中有一个工厂机制,它实际上是两阶段的。您可以在类上使用静态方法来创建工厂对象,可以将其配置为在一组实现之间进行选择,然后使用工厂对象来标记完成实际工作所需的对象实例。
还要考虑工厂模式在没有静态方法的语言中的实现。例如,在Scala中,您将使用对象而不是类。尽管它的行为非常类似于在Java中的类上使用静态方法,但实现的性质却截然不同。
发布于 2009-10-15 08:31:15
不,工厂可以保持状态。这取决于需要什么。
我建议,在第一个实例中,静态测试似乎是一个不错的选择--当你试图测试静态测试时,你往往会遇到问题。
避开他们,直到你特别需要他们。
发布于 2009-10-15 08:34:00
不,默认情况下工厂类不应该是静态的。实际上,静态类在OOP世界中是不受欢迎的,因为它们也可以传达一些状态,从而引入全局应用程序状态。如果你只需要一个工厂对象,你可以通过单例模式来控制它的创建。
在工厂方法的情况下-可以保持它是静态的(实际上没有其他合理的方法:)。
https://stackoverflow.com/questions/1571020
复制相似问题