简单工厂模式
#-*- coding:utf-8 -*-
#需求:实现加减乘除计算器
#设计模式:面向对象,简单工厂模式
#定义计算模式父类,计算模式子类继承该父类
#定义计算模式生成工厂类,用于生成计算对象
#定义客户端类,调用计算模式生成工厂
class CalcSuper:
def __init__(self):
self.result = 0
def cacl(self):
return self.result
class CalcAdd(CalcSuper):
def calc(self,num1, num2):
return num1+num2
class CalcSub(CalcSuper):
def calc(self,num1, num2):
return num1-num2
class CalcMul(CalcSuper):
def calc(self,num1, num2):
return num1*num2
class CalcDiv(CalcSuper):
def calc(self,num1, num2):
return num1//num2
#定义计算生成模式工厂类
class CalcModelFactory:
def __init__(self,calc_type):
self.calc_type_dic = {
'+':CalcAdd,
'-':CalcSub,
'*':CalcMul,
'/':CalcDiv,
}
self.calc_type = calc_type
def calc_obj(self):
return self.calc_type_dic.get(self.calc_type)()
#定义客户端
class Calc_Client:
def __init__(self,calc_type,num1, num2):
self.calc_type = calc_type
self.num1 = num1
self.num2 = num2
def calc(self):
obj = CalcModelFactory(self.calc_type)
obj = obj.calc_obj()
return obj.calc(self.num1, self.num2)
calc1 = Calc_Client('+',7,2)
print(calc1.calc())