觀察者模式可能是我們在軟體開發中使用得比較多的一種設計模式。為什麼這麼說?大家可以聽我一一到來。我們知道,在windows的軟體中,所有的界都是由視窗構成的。對話方塊是視窗,選單是視窗,工具欄也是視窗。那麼這些視窗,在很多情況下要對一些共有的資訊進行處理。比如說,視窗的放大,視窗的減小等等。面對這一情況,觀察者模式就是不錯的乙個選擇。
首先,我們可以對這些共有的object進行提煉。
[cpp]view plain
copy
?typedef
struct
_object
object;
其實,我們需要定義的就是觀察者本身了。就像我們前面說的一樣,觀察者可以是選單、工具欄或者是子視窗等等。
[cpp]view plain
copy
?typedef
struct
_observer
observer;
緊接著,我們要做的就是在observer建立的時候,把observer自身繫結到object上面。
[cpp]view plain
copy
?void
bind_observer_to_object(observer* pobserver, object* pobject)
void
unbind_observer_from_object(observer* pobserver, object* pobject)
既然observer在建立的時候就把自己繫結在某乙個具體的object上面,那麼object發生改變的時候,統一更新操作就是一件很容易的事情了。
[cpp]view plain
copy
?void
notify(
struct
_object* pobject)
}
C語言和設計模式(觀察者模式)
觀察者模式可能是我們在軟體開發中使用得比較多的一種設計模式。為什麼這麼說?大家可以聽我一一到來。我們知道,在windows的軟體中,所有的界都是由視窗構成的。對話方塊是視窗,選單是視窗,工具欄也是視窗。那麼這些視窗,在很多情況下要對一些共有的資訊進行處理。比如說,視窗的放大,視窗的減小等等。面對這一...
07 C語言和設計模式(觀察者模式)
觀察者模式可能是我們在軟體開發中使用得比較多的一種設計模式。為什麼這麼說?大家可以聽我一一到來。我們知道,在windows的軟體中,所有的界都是由視窗構成的。對話方塊是視窗,選單是視窗,工具欄也是視窗。那麼這些視窗,在很多情況下要對一些共有的資訊進行處理。比如說,視窗的放大,視窗的減小等等。面對這一...
python 設計模式 觀察者 觀察者設計模式
在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...