觀察者模式 123

2021-10-07 17:49:57 字數 1796 閱讀 4377

真是不爽啊,剛寫的東西合併賬號之後,不見了,還要重寫,讓我這麼懶的人如何是好。

我們今天是記錄一下這幾天學習和使用的觀察者模式,

首先我們需要知道什麼是觀察者模式

說是定義其實是我個人給他的定義,就是乙個被觀察者和多個觀察者之間的愛恨情仇,也就是被觀察者定義乙個集合存放所有的觀察者,當需要通知的時候遍歷集合去通知各個觀察者

官方定義:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。(菜鳥教程)

1,使用觀察者可以降低類/物件之間的耦合,通俗的講我們只需要知道我們自己的身份,不需要知道其他人的身份,互相之間沒有過多的接觸。

2,符合開閉原則,定義了觀察者和被觀察者的實現介面 ,我們只需要去實現定義的介面就好,需要修改或新增只需要修改我們定義的實現介面,不需要改變物件/類。

3,當乙個物件的資源或屬性改變需要通知其他的物件做出相應的更新此時觀察者模式可以是我們的選擇(在這方面其他感覺跟eventbus 差不多)

觀察者模式分為兩塊

1,觀察者 :簡單的使用就是我們只需要在觀察者中定義乙個通知接收的方法即可

2,被觀察者:我們需要提供新增觀察者的方法,移除觀察者的方法,以及通知觀察者更新的方法,再觀察這種我們需要定義用來儲存觀察者物件的集合

鮮花 掌聲讓我們請出例子

首先我們定義的是觀察者介面

/*

* 定義觀察者 介面

* */

inte***ce

observer

是不是跟我上面說的一樣很簡單,我們只需要乙個接收更新的方法就可以了

接下來我們請出 我們的被觀察者撒花

/*

* 定義被觀察者 介面

* */

inte***ce

observed

inner class

parenta

: observer

} inner class

parentb

: observer

} inner class

parentc

: observer

}

接下來我們來定義物件---->老師 == 被觀察者

inner class

teacher

: observed

override fun remove

(observer: observer)

} override fun notifyall

(msg: string)

}}

那麼到此,我們的觀察者和被觀察者都已經建立完成了,接下來就是如果去使用被觀察者去通知所有的觀察者了,各位觀眾大老爺,請別眨眼~~~

@test

fun startnotify()

接下來我們就是來驗證我們的最終成果的時候了

家長a 收到通知週末 要上課啊  !!!

家長b 收到通知週末 要上課啊 !!!

家長c 收到通知週末 要上課啊 !!!

如我們所願,我們通過被觀察者的通知,每個觀察者都收到了 通知訊息,有的同學會問我,那麼我們怎麼在android 應用裡面使用觀察者模式呢。這個問題問的好,如果有緣的話,我們還會再見的。

bye bye了您嘞!!!

python觀察者模式 python 觀察者模式

python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...

觀察者模式

觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...

觀察者模式

觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓他們能夠自動更新自己 任何乙個模式都是離不開角色的,這裡也會有幾種角色 抽象主題角色 把所有對觀察者物件的引用儲存在乙個集合中,每個抽象主題角色都可以有任意數量的觀察...