Python 工厂设计模式的实现?
我一直在研究用python实现工厂方法设计模式&我得到的大多数示例都是这种形式的Python 工厂设计模式的实现?,python,factory,factory-pattern,Python,Factory,Factory Pattern,我一直在研究用python实现工厂方法设计模式&我得到的大多数示例都是这种形式的 class Cup: color = "" # This is the factory method @staticmethod def getCup(cupColor): if (cupColor == "red"): return RedCup() elif (cupColor == "blue"):
class Cup:
color = ""
# This is the factory method
@staticmethod
def getCup(cupColor):
if (cupColor == "red"):
return RedCup()
elif (cupColor == "blue"):
return BlueCup()
else:
return None
class RedCup(Cup):
color = "red"
class BlueCup(Cup):
color = "blue"
# A little testing
redCup = Cup.getCup("red")
print "%s(%s)" % (redCup.color, redCup.__class__.__name__)
blueCup = Cup.getCup("blue")
print "%s(%s)" % (blueCup.color, blueCup.__class__.__name__)
为什么对工厂功能使用class
难道不是这样吗:
def CupFactory(cupColor):
if (cupColor == "red"):
return RedCup()
elif (cupColor == "blue"):
return BlueCup()
else:
return None
或者,在特定情况下,首选/需要基于类的方法
注意:互联网上使用类的示例
.
@Aran Fey,您链接的问题似乎相似,但事实并非如此。建议的解决方案是通过使用
@classmethod
使用替代构造函数,这是创建工厂的一种方法,但我有一个完全不同的问题,为什么要将类用于工厂?
,在这种情况下,使用altrnate构造函数/@staticmethod
是不合适的,我猜你是说Cup
类的唯一目的是保存工厂方法?是的,这就是我所困惑的,因为大多数示例都显示了类似的东西(我甚至在问题中提到了一个链接)。根据我的说法,在这里使用一个类是一种过分的杀伤力,一个简单的函数就足够了。但是在任何情况下,我可能需要一个类来创建工厂吗?好的,我已经重新打开了这个问题。考虑到camelCase
方法名称,我怀疑你有一个非常常见的情况,就是有人用Python编写Java。。。。但更严重的是,这些可能只是简单的例子。类工厂对象可能需要更复杂的方法。