简单工厂属于类的创新性模式,又叫静态工厂方法模式。是专门通过定义一个类来负责创建其他类的实例,被创建的实例通常都具有相同的父类。
模式特点:工厂工具条件产生不同功能的类。
简单工厂的组成要素:负责具体产品对象的创建工作,是该模式的核心。当场景比较负责的时候,可能需要 一个工厂类来负责产品的创建。以及产品的抽象接口或者抽象类,抽象所有产品的公共接口。
使用场景:工厂类负责创建的对象较少。只需要知道传入工厂类的参数,对于如何创建对象并不关心。如下用工厂类实现一个加减乘除的计算操作:
class MathBase(object):
def Calc(self,x,y):
return 0
class MathAdd(MathBase):
def Calc(self,x,y):
return x+y
class MathSub(MathBase):
def Calc(self,x,y):
return x-y
class MathMult(MathBase):
def Calc(self,x,y):
return x*y
class MathDiv(MathBase):
def Calc(self,x,y):
try:
return x/y
except:
print('error:divided by zero')
return 0
class MathFactory():
@staticmethod
def createMath(operate):
math_dict = {r'+':MathAdd,
r'-':MathSub,
r'*':MathMult,
r'/':MathDiv,}
math_object = MathBase()
if operate in math_dict:
math_object = math_dict[operate]()
return math_object
def Calc(operate,x,y):
calc_object = MathFactory.createMath(operate)
return calc_object.Calc(x,y)
if __name__ == "__main__":
while True:
operate = input("请输入操作方法+-*/中的一个")
number1 = input("请输入参数1")
number2 = input("请输入参数2")
print(Calc(operate,int(number1),int(number2)))