07 C語言和設計模式(觀察者模式)

2021-09-30 11:39:23 字數 1001 閱讀 5052

觀察者模式可能是我們在軟體開發中使用得比較多的一種設計模式。為什麼這麼說?大家可以聽我一一到來。我們知道,在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的軟體中,所有的界都是由視窗構成的。對話方塊是視窗,選單是視窗,工具欄也是視窗。那麼這些視窗,在很多情況下要對一些共有的資訊進行處理。比如說,視窗的放大,視窗的減小等等。面對這一...

C語言和設計模式(觀察者模式) 19

觀察者模式可能是我們在軟體開發中使用得比較多的一種設計模式。為什麼這麼說?大家可以聽我一一到來。我們知道,在windows的軟體中,所有的界都是由視窗構成的。對話方塊是視窗,選單是視窗,工具欄也是視窗。那麼這些視窗,在很多情況下要對一些共有的資訊進行處理。比如說,視窗的放大,視窗的減小等等。面對這一...

python 設計模式 觀察者 觀察者設計模式

在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...