python設計模式之監聽模式
class heatWater(object):
def __init__(self):
self.__observers=[]
self.__waterHeater=25
def addObserver(self,observer):
self.__observers.append(observer)
def getWatterHeater(self):
return self.__waterHeater
def heater(self,waterHeater):
print(waterHeater)
self.__waterHeater=waterHeater
self.notify()
def notify(self):
for o in self.__observers:
o.update(self)
class Observer(object):
def update(self,heatHeater):
pass
class DrinkWater(Observer):
def update(self,heatHeater):
if(heatHeater.getWatterHeater()>=100):
print("drink")
class Shower(Observer):
def update(self,heatHeater):
if(heatHeater.getWatterHeater()<=70 and heatHeater.getWatterHeater()>=50):
print("take shower")
t=heatWater()
t.addObserver(DrinkWater())
t.addObserver(Shower())
t.heater(70)
t.heater(100)
70
take shower
100
drink
現在是監聽模式寫死在物件裡,我們現在把他分離出來
class Observer(object):
def update(self,heatHeater):
pass
class Observable(object):
def __init__(self):
self.__observers=[]
def addObserver(self,observer):
self.__observers.append(observer)
def notify(self):
for o in self.__observers:
o.update(self)
class heatWater(Observable):
def __init__(self):
super().__init__()
self.__waterHeater=25
def getWatterHeater(self):
return self.__waterHeater
def heater(self,waterHeater):
print(waterHeater)
self.__waterHeater=waterHeater
self.notify()
class DrinkWater(Observer):
def update(self,heatHeater):
if(heatHeater.getWatterHeater()>=100):
print("drink")
class Shower(Observer):
def update(self,heatHeater):
if(heatHeater.getWatterHeater()<=70 and heatHeater.getWatterHeater()>=50):
print("take shower")
t=heatWater()
t.addObserver(DrinkWater())
t.addObserver(Shower())
t.heater(70)
t.heater(100)
相關文章
- python設計模式之策略模式Python設計模式
- python設計模式之工廠模式Python設計模式
- python設計模式之介面卡模式Python設計模式
- python設計模式之觀察者模式Python設計模式
- Python 中的設計模式詳解之:策略模式Python設計模式
- Python 設計模式-命令模式Python設計模式
- 設計模式之策略模式設計模式
- 設計模式之代理模式設計模式
- 設計模式之Plugin模式設計模式Plugin
- 《設計模式》之代理模式設計模式
- 設計模式之命令模式設計模式
- 設計模式之-命令模式設計模式
- 設計模式之【策略模式】設計模式
- 設計模式之單例設計模式設計模式單例
- python設計模式-模板方法模式Python設計模式
- python設計模式狀態模式Python設計模式
- Python設計模式-外觀模式Python設計模式
- # Python設計模式 單例模式Python設計模式單例
- Python設計模式——單例模式Python設計模式單例
- python設計模式-單例模式Python設計模式單例
- 一.設計模式之工廠設計模式設計模式
- JavaScript設計模式之建立型設計模式JavaScript設計模式
- Javascript設計模式之代理模式JavaScript設計模式
- Java設計模式之builder模式Java設計模式UI
- 設計模式之單例模式設計模式單例
- PHP 設計模式之策略模式PHP設計模式
- 設計模式之——狀態模式設計模式
- Java設計模式之代理模式Java設計模式
- 設計模式之----Java模板模式設計模式Java
- 設計模式之模板方法模式設計模式
- 設計模式之☞單例模式設計模式單例
- JavaScript 設計模式之策略模式JavaScript設計模式
- Javascript設計模式之命令模式JavaScript設計模式
- Javascript設計模式之策略模式JavaScript設計模式
- 設計模式之門面模式設計模式
- 設計模式之原型模式設計模式原型
- 設計模式之迭代器模式設計模式
- 設計模式之---單例模式設計模式單例