設計模式2:觀察者模式

1.主題subjectjava

subject中有一個鏈表,用來存放已經註冊的observer對象,這樣數據改變的時候就能夠在notice裏面實現通知全部observer了。編程

既然是list,那麼數據類型應該是相同的,因此不能夠建立公告牌A,公告牌B等不一樣的類型。函數

書中給出,建立observer類,裏面只有一個update,公告牌繼承observer類。學習

這樣邏輯有點亂,觀察者裏面爲何只有一個update呢?恐怕只是爲了做爲list的成員才單獨實現的observer吧?指針

 

2. 我給出的方案是:server

建立observer類做爲基類,裏面有update和display函數,不一樣公告牌繼承observer類;對象

鏈表指針都是observer指針,能夠做爲list元素,因爲指向不一樣派生類,還能夠實現各自的結構(經過多態性實現)。繼承

這種共性和差別性都體現出來了!接口

 

3.observer能夠是接口嗎?基礎

接口是用來實現的,類是用來繼承的。

這裏明顯是繼承了observer,並具備成員變量,並不像以前接口那樣,裏面只有單獨的一個函數。

因此observer不符合java中關於接口的定義。

可是,observer徹底實現了接口的功能,能夠實現:

當公告牌類的數目和類型發生變化的時候,並不須要從新寫與接口相關的調用。

 

4.結論

因此,既然C++的接口和普通類沒有區分那麼明顯,

在學習面向接口編程思想的基礎上,就不要太拘泥於形式了。

相關文章
相關標籤/搜索