1-简单工厂模式

时光怂恿深爱的人放手 提交于 2019-12-01 07:40:32

简单工厂模式

 

#-*- 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())

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!