设计模式的几种用法

#设计模式
#工厂模式:用类和对象模拟工厂生产汽车的模式
'''class BMW():
    def __init__(self,name):
        self.name=name
class Bonz():
    def __init__(self,name):
        self.name=name
class CarFatory():
    @staticmethod
    def makeCar(name):
        if name=="宝马":
            return BMW(name)
        if name=="奔驰":
            return Bonz(name)

car=CarFatory.makeCar("奔驰")
print(car.name,type(car))
car2=CarFatory.makeCar("宝马")
print(car2.name,type(car2))'''

# a=[1,2,3,4]
# def A(a):
#     return a*a
# c=map(A,a)
# print(c)
# for i in c:
#     print(i)

# a=[1,2,3]
# b="abcdef"
#
# c=zip(a,b)
# print(c)
# for i in c:
#     print(i)
#

# def guoLu(f):
#     return f%2==0
# a=[1,2,3,4,5,6]
# b=filter(guoLu,a)
# for i in b:
#     print(i)

#观察者模式:用来模拟一对多的观察以及通讯任务
'''class Resi():
    def __init__(self):
        self.obs=[]
        self.status=""
    def attach(self,ob):
        self.obs.append(ob)
    def notify(self):
        for x in self.obs:
            x.update()

class Observe():
    def __init__(self,name,resi):
        self.name=name
        self.resi=resi
    def update(self):
        print("%s,%s 请不要玩手机了"%(self.resi.status,self.name))
class Manager():
    def __init__(self,name,boss):
        self.name=name
        self.boss=boss
    def updata(self):
        print("%s,%s请到北京饭店一聚"%(self.boss.status,self.name))

if __name__ == '__main__':
    resi=Resi()
    obj_zs=Observe("张三",resi)
    obj_ls=Observe("李四",resi)
    obj_ww=Observe("王五",resi)
    m_qd=Observe("马强东",resi)
    my=Observe("马云",resi)
    resi.attach(obj_zs)
    resi.attach(obj_ls)
    resi.attach(obj_ww)
    resi.attach(m_qd)
    resi.attach(my)
    resi.status="老板来了"
    resi.notify()'''

class CashNormal():             #策略模式	某一项功能的几种解决方式,例如商场营销模式
    def accept_money(self,money):
        return money
class CashRate():
    def __init__(self,rate):
        self.rate=rate
    def accept_money(self,money):
        return money*self.rate
class CashReturn():
    def __init__(self,condition,ret):
        self.condition=condition
        self.ret=ret
    def accept_money(self,money):
        return money-money//self.condition*self.ret

class Context():
    def __init__(self,cs):
        self.cs=cs
    def getResult(self,money):
        return self.cs.accept_money(money)
if __name__ == '__main__':
    zd={}
    zd[1]=Context(CashNormal())
    zd[2]=Context(CashRate(0.8))
    zd[3]=Context(CashReturn(300,50))
    celue=int(input("请输入策略:"))
    if celue in zd.keys():
        cs=zd[celue]
    else:
        cs=zd[1]
    money=float(input("请输入钱:"))
    print(cs.getResult(money))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值