#設計模式
#工廠模式:用類和物件模擬工廠生產汽車的模式
'''class bmw():
def __init__(self,name):
self.name=name
class bonz():
def __init__(self,name):
self.name=name
class ca***tory():
@staticmethod
def makecar(name):
if name=="寶馬":
return bmw(name)
if name=="賓士":
return bonz(name)
car=ca***tory.makecar("賓士")
print(car.name,type(car))
car2=ca***tory.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):
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
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))
設計模式的幾種原則
一.黎克特制代換原則 定義 子型別必須能夠替換它們的父型別。dh 解釋 也就是說,在軟體裡面,把父類都替換成子類,程式的行為沒有變化。也只有這樣父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。這個原則是對繼承的乙個約束,也就是說,繼承中子類嚴格滿足 is a 的關係。所以,當你看到乙個繼...
常見的幾種設計模式
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點 public class lazyman2 提供對外方法 public static lazyman2 getinstance return singleton 使用乙個工廠類來專門生產物件,使用者只是關心產品,不用關心建立過程 public ...
設計模式的幾種原則
一.黎克特制代換原則 定義 子型別必須能夠替換它們的父型別。dh 解釋 也就是說,在軟體裡面,把父類都替換成子類,程式的行為沒有變化。也只有這樣父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。這個原則是對繼承的乙個約束,也就是說,繼承中子類嚴格滿足 is a 的關係。所以,當你看到乙個繼...