#理解:
#工厂模式:实例化延迟到子类
#例子:产品为一种运算
#缺点:使用类作为代价,且Factory对修改不封闭,对于每加一个product就要修改Factory,当然可以使用配置文件,这样就能对factory封闭。
class product_opt:
def getResult(self):
pass
class product_add(product_opt):
def getResult(self):
return self.num1+self.num2
class product_sub(product_opt):
def getResult(self):
return self.num1-self.num2
class product_err(product_opt):
def getResult(self):
print "error"
return 0
class Factory:
operation={}
operation["+"]=product_add();
operation["-"]=product_sub();
def createproduct(self,ch):
if ch in self.operation:
op=self.operation[ch]
else:
op=product_err();
return op
if __name__=="__main__":
num1=input("a:")
op=raw_input("operation:")
num2=input("b:")
factory=Factory();
product=factory.createproduct(op)
product.num1=num1
product.num2=num2
print product.getResult()
运行结果,如图: