工厂模式
class BMW():
def __init__(self,name):
self.name=name
class Benz():
def __init__(self,name):
self.name=name
class CarFactory():
@staticmethod
def makeCar(name):
if name=='宝马':
return BMW(name)
elif name=='奔驰':
return Benz(name)
car=CarFactory.makeCar('奔驰')
print(car.name,type(car))
car2=CarFactory.makeCar('宝马')
print(car2.name,type(car2))
抽象方法,不能实例化
from abc import ABC,abstractclassmethod,abstractmethod,abstractstaticmethod
class Dog(ABC):
@abstractclassmethod
def clMethod(self):
pass
@abstractmethod
def mMethod(self):
pass
@abstractstaticmethod
def stMethod(self):
pass
d=Dog()
zip,map,filter的使用
a=[1,2,3]
b='abd'
c=zip(a,b)
print(c)
for x in c:
print(x)
def deal(a):
return a*a
b=[1,2,3,4]
c=map(deal,b)
print(c)
for x in c:
print(x)
def dex(a):
return a%2==1
h=[1,2,3,4,5,6,7]
b=filter(dex,h)
print(b)
for x in b:
print(x)
观察者模式
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_xh=Observe('小红',resi)
lqd=Manager('刘强东',resi)
my=Manager('马云',resi)
resi.attach(obj_zs)
resi.attach(obj_ls)
resi.attach(obj_xh)
resi.attach(lqd)
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:
cs=zd[celue]
else:
cs=zd[1]
money=float(input('请输入钱'))
print(cs.getResult(money))