工厂模式在Python中毫无意义吗?
因为Python是一种鸭子类型的语言,所以在Python中写工厂类是否毫无意义?http://en.wikipedia.org/wiki/Factory_method_pattern
2 个回答
4
这不是一个真正的工厂类,但Python的标准库里至少有一个工厂方法:http://docs.python.org/library/collections.html#collections.namedtuple。
当然,还有一个事实就是你可以使用内置的type()
动态创建类。
我不会说它们毫无意义,而是Python提供了很多种可能性,让你可以创建各种类型的工厂。其实,写一个工厂类来生成可以被调用的工厂类本身也是相对简单的。
12
虽然在某些情况下,工厂模式可能不太必要,特别是在其他编程语言中,但在某些时候使用它还是有意义的。它可以让你的API看起来更整洁,比如说可以避免重复写代码来决定返回哪一个子类。
根据你链接的维基百科文章:
在以下情况下使用工厂模式:
- 创建对象时,如果不重复写很多代码,就无法重用这个对象。
- 创建对象需要一些信息或资源,而这些信息或资源不适合放在创建对象的地方。
- 需要集中管理创建的对象的生命周期,以确保它们的行为一致。
这些情况在鸭子类型的语言中同样适用。