Python 工厂模式的好处?
我已根据设计模式手册对以下工厂模式进行了编程:Python 工厂模式的好处?,python,design-patterns,factory-pattern,Python,Design Patterns,Factory Pattern,我已根据设计模式手册对以下工厂模式进行了编程: class Pizza(): def __init__(self): self. cost=0 @property def cost(self): return self.cost class PizzaFactory(): class Clamp(Pizza): def __init__(self): self.cost=10 class Vega
class Pizza():
def __init__(self):
self. cost=0
@property
def cost(self):
return self.cost
class PizzaFactory():
class Clamp(Pizza):
def __init__(self):
self.cost=10
class Vegan(Pizza):
def __init__(self):
self.preci0=40
class NY(Pizza):
def __init__(self):
self.cost=30
@staticmethod
def makePizza(type):
if type=="Clamp":
return Clamp()
elif type=="Vegan":
return Vegan()
elif type=="NY":
return NY()
def main():
PizzaFactory=PizzaFactory()
print PizzaFactory.makePizza("Clamp").cost
if __name__=="__main__":
main()
我明白了一点,那就是集中构造函数,在Java中用于不总是使用新词,但我不太确定它在Python中是否有直接的用途
我发现几乎所有的例子都是这样做的,在一个工厂类中创建了一些简单的对象,并说它将更容易扩展我的类,但我没有看到一个具体的例子
有人能给我一个例子来证明这个工厂模式对于我所做的编程示例是有用的吗
谢谢
警察局。顺便说一句,我发现它的工厂模式是用Python构建的,因此给人的印象是Python缺少一些模式。来源:您的示例非常简单,可能没有任何“真实”的用例
是我写的工厂函数。它根据字符串标识符确定要使用哪个类。这些标识符在运行时从JSON动态加载。工厂的动态特性使这些类更具可扩展性,因为任何人都可以挂接此工厂并向系统添加更多类。对于我们知道需要创建对象的时候,其确切的子类是动态的,直到运行时才能知道。一个动态解析XML/JSON到对象的例子,“顺便说一句,据一些作者说,Python中并不存在工厂模式。”WTF?哪些作者?请给我引证。它当然存在。
PizzaFactory=PizzaFactory()
什么都不做;移除它。否则,您基本上实现了一个dict
,它将一些字符串映射到类初始值设定项;你可以用,你知道的,一个实际的dict
。但实际上,这里根本不需要类
,您可以使用模块级函数完全复制这种行为。Java对类之外的事物没有概念,因此工厂模式在那里是有意义的。请改为编写一个函数。谢谢@roippi,也许您有一些Python工厂的真实Python示例?