工厂模式的核心:
有这样一群类,他们区别很小,就像运算符类,他们的区别仅仅就是不同的运算符号。这样我们可以建一个工厂,按需“生产”出所需的所需要的类的实例。
#encoding=utf-8
#
#by panda
#简单工厂模式
class OperateBase():
result = 0;
def GetResult(self):
return self.result;
class OperationAdd(OperateBase):
def __init__(self, NumA, NumB):
self.result = NumA + NumB;
def GetResult(self):
return self.result;
class OperationSub(OperateBase):
def __init__(self, NumA, NumB):
self.result = NumA - NumB;
def GetResult(self):
return self.result;
class OperationMult(OperateBase):
def __init__(self, NumA, NumB):
self.result = NumA * NumB;
def GetResult(self):
return self.result;
class OperationDiv(OperateBase):
def __init__(self, NumA, NumB):
self.result = NumA / NumB;
def GetResult(self):
return self.result;
class OperationFactory():
@staticmethod
def createOperate(operate, NumA, NumB):
optList = {
'+':OperationAdd,
'-':OperationSub,
'*':OperationMult,
'/':OperationDiv,
}
oper = OperateBase()
if(optList.has_key(operate)):
oper = optList[operate](NumA, NumB);
return oper
def clientUI():
opt = raw_input("please input a operation(+-*/): ");
NumA = raw_input("please input the first number: ");
NumB = raw_input("please input the second number: ");
oper = OperationFactory.createOperate(opt, float(NumA), float(NumB))
print "Restlt: ", oper.GetResult()
return
if __name__ == '__main__':
clientUI();
UML类图如下: