工厂模式在Python中毫无意义吗?

时间:2011-07-18 19:29:26

标签: python factory-pattern

由于Python是一种鸭式语言,因此在Python中编写工厂类毫无意义? http://en.wikipedia.org/wiki/Factory_method_pattern

2 个答案:

答案 0 :(得分:12)

虽然有些时候工厂模式可能不需要在其他语言中使用,但仍有时候使用它可能是有效的 - 它可能只是一种使API更清洁的方式 - 例如作为一种防止重复代码的方法,它决定返回一系列子类中的哪一个。

来自您链接的维基百科文章:

  

在以下情况下使用工厂模式:

     
      
  • 对象的创建阻止了重用,而不会显着重复代码。
  •   
  • 创建对象需要访问不适合包含在撰写对象中的信息或资源。
  •   
  • 需要集中创建对象的生命周期管理,以确保一致的行为。
  •   

当语言被打字时,所有这些仍然适用。

答案 1 :(得分:4)

它不完全是工厂,但Python标准库至少有一个工厂方法:http://docs.python.org/library/collections.html#collections.namedtuple

然后,当然,您可以使用the type() builtin动态创建类。

我不会说它们没有意义,因为Python为您可以创建的工厂提供了大量的可能性。即使编写一个工厂类来创建工厂类作为其自身的可调用实例,它也相对简单。