由于Python是一种鸭式语言,因此在Python中编写工厂类毫无意义? http://en.wikipedia.org/wiki/Factory_method_pattern
答案 0 :(得分:12)
虽然有些时候工厂模式可能不需要在其他语言中使用,但仍有时候使用它可能是有效的 - 它可能只是一种使API更清洁的方式 - 例如作为一种防止重复代码的方法,它决定返回一系列子类中的哪一个。
来自您链接的维基百科文章:
在以下情况下使用工厂模式:
- 对象的创建阻止了重用,而不会显着重复代码。
- 创建对象需要访问不适合包含在撰写对象中的信息或资源。
- 需要集中创建对象的生命周期管理,以确保一致的行为。
当语言被打字时,所有这些仍然适用。
答案 1 :(得分:4)
它不完全是工厂类,但Python标准库至少有一个工厂方法:http://docs.python.org/library/collections.html#collections.namedtuple。
然后,当然,您可以使用the type()
builtin动态创建类。
我不会说它们没有意义,因为Python为您可以创建的工厂提供了大量的可能性。即使编写一个工厂类来创建工厂类作为其自身的可调用实例,它也相对简单。