首頁 >常見問題 >觀察者模式是什麼?

觀察者模式是什麼?

Guanhui
Guanhui原創
2020-06-28 16:12:294411瀏覽

觀察者模式是一種物件行為模式,該模式定義物件間的一種一對多的依賴關係,當一個物件的狀態改變時,所有依賴它的物件都被通知並被自動更新,從而提高了應用程式的可維護性和重用性。

觀察者模式是什麼?

觀察者模式是一種物件行為模式。它定義物件間的一種一對多的依賴關係,當一個物件的狀態改變時,所有依賴它的物件都會被通知並被自動更新。在觀察者模式中,主題是通知的發布者,它發出通知時並不需要知道誰是它的觀察者,可以有任意數量的觀察者訂閱並接收通知。觀察者模式不僅被廣泛應用於軟體介面元素之間的交互,在業務物件之間的交互、權限管理等方面也有廣泛的應用。

觀察者模式(Observer)完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為一個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的一個原則是:系統中的每個類別將重點放在某一個功能上,而不是其他方面。一個物件只做一件事情,並且將他做好。觀察者模式在模組之間劃定了清晰的界限,提高了應用程式的可維護性和重用性。

觀察者設計模式定義了物件間的一種一對多的組合關係,以便當一個物件的狀態發生變化時,所有依賴它的物件都會被通知並自動刷新。

觀察者模式實現方式

觀察者模式有很多實現方式,從根本上說,該模式必須包含兩個角色:觀察者和被觀察對象。在剛才的例子中,業務資料是被觀察對象,使用者介面是觀察者。觀察者和被觀察者之間存在著「觀察」的邏輯關聯,當被觀察者發生改變的時候,觀察者就會觀察到這樣的變化,並且做出相應的反應。如果在使用者介面、業務資料之間使用這樣的觀察過程,可以確保介面和資料之間劃清界限,假定應用程式的需求發生變化,需要修改介面的表現,只需要重新建構一個使用者介面,業務數據不需要發生變化。

觀察者模式使用場景

1、當一個抽像模型有兩個面向,其中一個面向依賴另一方面。將這二者封裝在獨立的物件中以使它們可以各自獨立地改變和重複使用。

2、當對一個對象的改變需要同時改變其他對象,而不知道具體有多少對象需要被改變。

3、當一個對象必須通知其他對象,而它又不能假定其他對像是誰。換言之,不希望這些物件是緊密耦合的。

推薦教學:《PHP教學

#

以上是觀察者模式是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn