大B:“觀察者模式在關於目標角色、觀察者角色通信的具體實現中,有兩個版本?!?
小A:“哪兩種版本吶?”
大B:“一種情況是目標角色在發生變化後,僅僅告訴觀察者角色‘我變化了’;觀察者角色如果想要知道具體的變化細節,則就要自己從目標角色的接口中得到。這種模式被很形象的稱爲:拉模式——就是說變化的信息是觀察者角色主動從目標角色中‘拉’出來的。還有一種方法,那就是我目標角色‘服務一條龍’,通知你發生變化的同時,通過一個參數將變化的細節傳遞到觀察者角色中去。這就是‘推模式’——管你要不要,先給你啦。這兩種模式的使用,取決於系統設計時的需要。如果目標角色比較複雜,並且觀察者角色進行更新時必須得到一些具體變化的信息,則‘推模式’比較合適。如果目標角色比較簡單,則‘拉模式’就很合適啦。”