工厂方法模式(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()