Python設計攻略 《監聽模式》

2021-10-24 02:20:28 字數 1524 閱讀 2785

這是著名的例子。假設我們生活在乙個70年代的家庭,剛發明了電熱水爐,但由於熱水爐沒有顯示水溫,我們需要有乙個監聽器去監察現在的水溫。

如果只顯示水溫當然沒有難度,但若果這個熱水爐不同溫度時能夠做到不同的功能的話,那麼程式碼就會變得重複而冗長。這時候「監聽模式」就大派用場,大大地縮短了程式碼行數。但我們要如何理解這堆程式碼呢?

class

heatwater

(object):

def__init__

(self)

: self.__observers=

self.__waterheater=

25def

addobserver

(self,observer)

:def

getwatterheater

(self)

:return self.__waterheater

defheater

(self,waterheater)

:print

(waterheater)

self.__waterheater=waterheater

self.notify(

)def

notify

(self)

:for o in self.__observers:

o.update(self)

class

observer

(object):

defupdate

(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(

)<=

70and heatheater.getwatterheater(

)>=50)

:print

("take shower"

)t=heatwater(

)t.addobserver(drinkwater())

t.addobserver(shower())

t.heater(70)

t.heater(

100)

這個程式碼非常簡單,水溫在50℃~70℃時,會發出警告:可以用來洗澡了!水溫在100℃時也會發出警告:可以用來飲用了!在這裡洗澡模式和飲用模式扮演了監聽的角色,而熱水器則是被監聽的物件。一旦熱水器中的水溫度發生變化,監聽者就能及時知道並做出相應的判斷和動作。這就是程式設計中監聽模式的生動展現。

Python設計模式 監聽者模式

監聽模式 在物件之間定義一種一對多的關係,當這個物件發生改變時,所有依賴它的物件都會被通知到。核心就是建立起被觀察者和觀察者之間的一種自動觸發的關係。監聽者模式是物件的行為模式,又叫發布 訂閱模式 模型 檢視模式 源 模式或者從屬者模式。from abc import abcmeta,abstrac...

Python版設計模式之監聽者模式

又名觀察者模式 發布 訂閱模式 源 source listener 模式,模式的核心是 設計時要區分誰是被觀察者,誰是觀察者。被觀察者至少有三個方法,新增觀察者 刪除觀察者 監聽目標變化並通知觀察者 觀察者這至少包含乙個方法,當接收到被觀察者的通知時,做出相應的處理 即在被觀察者的監聽中呼叫 觀察者...

Python版設計模式之監聽者模式

又名觀察者模式 發布 訂閱模式 源 source listener 模式,模式的核心是 設計時要區分誰是被觀察者,誰是觀察者。被觀察者至少有三個方法,新增觀察者 刪除觀察者 監聽目標變化並通知觀察者 觀察者這至少包含乙個方法,當接收到被觀察者的通知時,做出相應的處理 即在被觀察者的監聽中呼叫 觀察者...