Python关于设计模式的书比较少,至少中文版比较少。网上有几篇讲Python设计模式的文章,但还太少。因此我在这里再写几篇。 为了区别与其他关于Python设计模式的文章,因此本系列就叫"良少版Python设计模式"。以免毁了其他关于Python设计模式作者的清誉啦:)
工厂方法模式
class
A(object):
def
__init__(self):
print
"A new"
object.__init__(self)
class
B(object):
def
__init__(self):
print
"B new"
object.__init__(self)
def
createObj(type):
eval(type)()
createObj("A")
createObj就是一个工厂方法,它根据参数创建了不同的对象。
因为Python的函数是第一类的机制,因此不需要像Java,Ruby那样在类中定义一个类函数。直接的模块级函数即可。
Python是动态语言,可以使用eval把字符串直接转为Python表示式执行。因此上述调用可行。