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設計模式
- 設計模式之Plugin模式設計模式Plugin
- 設計模式之策略模式設計模式
- 《設計模式》之代理模式設計模式
- 設計模式之【策略模式】設計模式
- 【設計模式之代理模式】設計模式
- 【設計模式之策略模式】設計模式
- 設計模式之代理模式設計模式
- 設計模式之-命令模式設計模式
- 設計模式之命令模式設計模式
- 設計模式之單例設計模式設計模式單例
- Python 中的設計模式詳解之:策略模式Python設計模式
- 設計模式之禪之代理模式設計模式
- Python 設計模式-命令模式Python設計模式
- Python設計模式-命令模式Python設計模式
- Python設計模式-策略模式Python設計模式
- Python設計模式-代理模式Python設計模式
- 通俗 Python 設計模式——原型設計模式Python設計模式原型
- 一.設計模式之工廠設計模式設計模式
- JavaScript設計模式之建立型設計模式JavaScript設計模式
- 玩轉設計模式——設計模式之禪設計模式
- PHP 設計模式之策略模式PHP設計模式
- 設計模式之☞單例模式設計模式單例
- Javascript設計模式之代理模式JavaScript設計模式
- Javascript設計模式之命令模式JavaScript設計模式
- JavaScript 設計模式之策略模式JavaScript設計模式
- Javascript設計模式之策略模式JavaScript設計模式
- 設計模式之【模板方法模式】設計模式
- 設計模式之建造者模式設計模式
- 設計模式之橋接模式設計模式橋接
- 設計模式之享元模式設計模式
- JAVA設計模式之策略模式Java設計模式
- 略懂設計模式之策略模式設計模式
- Java設計模式之builder模式Java設計模式UI
- 設計模式之工廠模式設計模式