我一直在研究如何在python&中实现工厂方法设计模式我得到的大多数例子都是这种形式。
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
或者存在特定情况,其中基于类的方法是首选/期望的。
注意:互联网上使用类的示例。