Я искал реализацию шаблона проектирования метода фабрики в 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
или есть особая ситуация, когда предпочтителен / желателен метод на основе классов.
ПРИМЕЧАНИЕ: Примеры, найденные в Интернете, которые используют классы.
Пример 1 . Пример 2