工厂模式 策略模式 观察者模式

#推导式

a=[i for i in range(10)]#推导式
print(a)

#生成器表达式

a=(i for i in range(10))#生成器表达式
print(a)

#True=1 False=0

print(True+2) #True=1
print(False+2)#False=0

#压缩 把两个序列压缩在一起 长度不一样是 以短的为主

a=[1,2,3,4]
b='asdf'
c=zip(a,b)
for x in c:
    print(x)#输出为顺序一一对应的元组

#压缩2

a=[1,2,3]
b='as'
c=zip(a,b)
for z in c:
    print(z)

#map

def asd(a):
    return a*a
b=[1,2,3,4]
d=map(asd,b)#将b里的每个元素一一传给asd函数,返回给d
print(d)
for x in d:
    print(x)

#max abs

a=[1,2,3,-2,4]
s=max(a,key=abs)
print(s)

#sort 排序,

a=[-9,-8,4,3,-1]
a.sort(key=abs)#按照绝对值的大小进行排序,返回值本身。
print(a)

#排序

a=[-9,-8,4,3,-1]
a.sort(key=abs,reverse=True)#颠倒顺序
print(a)

#filter

def asd(a):
    return a%2==1#返回bool类型
x=[1,3,4,6,7,9,19]
b=filter(asd,x)#把x中的元素一一给asd函数 进行判断 返回对 的给b。
print(b)
for z in b:
    print(z)

#工厂类型

class bmw():
    def __init__(self,name):
        self.name=name
class ben():
    def __init__(self,name):
        self.name=name
class carfactory():
    @staticmethod#必须使用静态方法
    def makecar(name):
        if name=='宝马':
            return bmw(name)
        elif name=='奔驰':
            return ben(name)
car1=carfactory.makecar('宝马')#类型 bmw
print(car1.name,type(car1))
car2=carfactory.makecar('奔驰')#类型 ben
print(car2.name,type(car2))

#抽象属性

from  abc import ABC,abstractclassmethod,abstractmethod,abstractstaticmethod
class abc1():
    @abstractclassmethod
    def cmethod(self):
        pass
    @abstractmethod
    def method(self):
        pass
    @abstractstaticmethod
    def amethod(self):
        pass
z=abc1()

#观察者模式 observer

class Resi():
    def __init__(self):
        self.obsv=[]
        self.status=''
    def attach(self,ob):
        self.obsv.append(ob)
    def notify(self):
        for x in self.obsv:
            x.update()
class Observe():
    def __init__(self,name,rs):
        self.name=name
        self.rs=rs
    def update(self):
        print('%s %s不要玩游戏了'%(self.rs.status,self.name))
class Manager():
    def __init__(self,name,boss):
        self.name=name
        self.boss=boss
    def update(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)
    Man_my=Manager('马云',resi)
    Man_lq=Manager('刘强东',resi)
    resi.attach(obj_zs)
    resi.attach(obj_ls)
    resi.attach(obj_ww)
    resi.attach(Man_my)
    resi.attach(Man_lq)
    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,conditon,ret):
        self.condition=conditon
        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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值