python 設計模式之觀察者模式

1.囉嗦一下

在現實世界中,許多對象並非獨立存在的,其中一個對象的行爲發生改變可能會致使一個或者多個其餘對象的行爲也發生改變。html

例如,某種商品的物價上漲時會致使部分商家高興,而消費者傷心;spa

這樣的例子還有不少,例如小偷與警察,貓和老鼠等.net

 

 觀察者模式就如一個聊天室,當你須要收到聊天室的消息時,你就註冊成爲聊天室的成員,當聊天室有信息更新時,就會傳到你那去。當你不須要接收聊天室的信息時,能夠註銷掉,退出聊天室。3d

 

2.模式的定義與特色

觀察者(Observer)模式的定義:指多個對象間存在一對多的依賴關係,當一個對象的狀態發生改變時,全部依賴於它的對象都獲得通知並被自動更新。這種模式有時又稱做發佈-訂閱模式、模型-視圖模式,它是對象行爲型模式。server

 

3.觀察者模式是一種對象行爲型模式,其主要優勢以下

  1. 下降了目標與觀察者之間的耦合關係,二者之間是抽象耦合關係。
  2. 目標與觀察者之間創建了一套觸發機制。

 

4.它的主要缺點以下

  1. 目標與觀察者之間的依賴關係並無徹底解除,並且有可能出現循環引用。
  2. 當觀察者對象不少時,通知的發佈會花費不少時間,影響程序的效率。

 

5.模式的應用場景

經過前面的分析與應用實例可知觀察者模式適合如下幾種情形。htm

  1. 對象間存在一對多關係,一個對象的狀態發生改變會影響其餘對象。
  2. 當一個抽象模型有兩個方面,其中一個方面依賴於另外一方面時,可將這兩者封裝在獨立的對象中以使它們能夠各自獨立地改變和複用。

 

6.舉個例子

 

 

 

 

 

 

參考對象

 http://c.biancheng.net/view/1390.htmlblog

https://baike.baidu.com/item/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/5881786?fr=aladdinit

 https://blog.csdn.net/u014453898/article/details/79167927效率

相關文章
相關標籤/搜索