一,類的四大基本關系:
a.關聯關系:如A類調用B類。
b.繼承關系:如A類是B類的父類。
c.聚合關系:如裝橘子的箱子,箱子是否存在與里面裝沒裝橘子沒有任何關系,也就是說橘子不會影響箱子的存在。
d.組合關系:如一個小組,小組是否存在與小組中是否有組員是息息相關的,如果沒有組員,小組就不存在了。
監聽器模式:事件源經過事件的封裝傳給監聽器,當事件源觸發事件后,監聽器接收到事件對象可以回調事件的方法
觀察者模式:觀察者(Observer)相當於事件監聽者,被觀察者(Observable)相當於事件源和事件,執行邏輯時通知observer即可觸發oberver的update,同時可傳被觀察者和參數
二,監聽模式
當事件源對象上發生操作時,將會調用事件監聽器的一個方法,並在調用該方法時把事件對象傳遞過去。
三,監聽模式的使用實例
四,觀察者模式與監聽模式的區別
什么也不說了,圖是最直觀的
1. 事件-監聽機制
事件源經過事件的封裝傳給監聽器,當事件源觸發事件后,監聽器接收到事件對象可以回調事件的方法。
2. 觀察者模式
觀察者(Observer)相當於事件監聽者(監聽器),被觀察者(Observable)相當於事件源和事件,執行邏輯時通知observer即可觸發oberver的update,同時可傳被觀察者和參數。簡化了事件-監聽模式的實現。
3.對比
(1) 從uml圖上也可以看出,Observer的實現相對簡單,event-listener需要實現三個角色,observer-observable需要實現兩個角色。
(2)Observable的api已經把對觀察者的注冊,刪除等定義好了,而且是線程安全的。而event-listener需要使用者自己實現。
(3)兩者都需要自己定義並實現觸發事件的通知。但Observable需要注意要在通知Observer之前調用jdk提供的setChanged()。
(4)event-listener是傳統的c/s界面事件模型,分事件源和事件(狀態)角色,事件源要經過事件的包裝、成為事件的屬性之一再傳遞給事件監聽/處理者,這個事件監聽者就相當於觀察者。Observer更簡潔一些。兩者在思想上是統一的,很多框架仍然使用了event-listener模式,比如spring框架的ApplicationEvent,ApplicationListener。