工厂方法模式(Factory method pattern):如果子类的某个方法要根据情况来决定用什么类去实例化相关对象,那么可以考虑该模式。
此模式可单独使用,也可在无法预知对象类型时使用(比方说,待初始化的对象类型要从文件中读入,或是由用户来输入)。
下面代码比较直接:
#!/usr/bin/env python
# encoding: utf-8
""" 工厂模式 """
class AbstractProduct(object):
def __init__(self):
""" 检验 """
self.show()
def show(self):
""" 要求子类实现的方法可以抛出异常 """
raise NotImplementedError()
class ProductA(AbstractProduct):
""" 具体类A """
def show(self):
print 'a产品'
class ProductB(AbstractProduct):
""" 具体类B """
def show(self):
print 'b产品'
def facotory(product, *args, **kwargs):
""" 工厂方法 """
if product == 'A':
return ProductA()
else:
return ProductB()
def main():
a = facotory('A')
b = facotory('B')
if __name__ == '__main__':
main()