獵頭招聘專案中的觀察者模式解析
阿新 • • 發佈:2018-11-08
專案介紹:獵頭或者HR往往會有很多職位資訊,求職者可以在獵頭或者HR那裡註冊,當獵頭或者HR有新的崗位資訊時,即會通知這些註冊過的求職者。這是一個典型的觀察者模式使用場景。
專案程式碼連結:
https://github.com/habren/JavaDesignPattern/commit/b35cb470512343c68deac5039394045b54c661f3
系統結構圖:
靜態關係結構圖:
程式碼解析:
1.觀察者介面
觀察者介面定義了newJob方法,當有崗位資訊時接收崗位資訊。
2.具體觀察者
具體觀察者實現了觀察者介面中的newJob方法,觀察者模式在被觀察者和觀察者之間建立一個抽象的耦合。被觀察者角色所知道的只是一個具體現察者聚集,每一個具體觀察者都符合一個抽象觀察者的介面。被觀察者並不認識任何一個具體觀察者,它只知道它們都有一個共同的介面。
3.抽象主題類
定義通知觀察者介面,而且還定義了增加和刪除觀察者的方法。
4.具體主題類:
只需實現當有崗位資訊時通知觀察者介面,通知所有已註冊的觀察者。
觀察者模式的優點
1.由於被觀察者和觀察者沒有緊密地耦合在一起,因此它們可以屬於不同的抽象化層次。
2.觀察者模式支援廣播通訊。
觀察者模式的缺點
1.如果一個被觀察者物件有很多直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間。
2.雖然觀察者模式可以隨時使觀察者知道所觀察的物件發生了變化,但是觀察者模式沒有相應的機制使觀察者知道所觀察的物件是怎麼發生變化的。