天天看點

獵頭招聘項目中的觀察者模式解析

項目介紹:獵頭或者HR往往會有很多職位資訊,求職者可以在獵頭或者HR那裡注冊,當獵頭或者HR有新的崗位資訊時,即會通知這些注冊過的求職者。這是一個典型的觀察者模式使用場景。

項目代碼連結:

https://github.com/habren/JavaDesignPattern/commit/b35cb470512343c68deac5039394045b54c661f3

系統結構圖:

獵頭招聘項目中的觀察者模式解析

靜态關系結構圖:

獵頭招聘項目中的觀察者模式解析

代碼解析:

1.觀察者接口

獵頭招聘項目中的觀察者模式解析

觀察者接口定義了newJob方法,當有崗位資訊時接收崗位資訊。

2.具體觀察者

獵頭招聘項目中的觀察者模式解析

具體觀察者實作了觀察者接口中的newJob方法,觀察者模式在被觀察者和觀察者之間建立一個抽象的耦合。被觀察者角色所知道的隻是一個具展現察者聚集,每一個具體觀察者都符合一個抽象觀察者的接口。被觀察者并不認識任何一個具體觀察者,它隻知道它們都有一個共同的接口。

3.抽象主題類

獵頭招聘項目中的觀察者模式解析

定義通知觀察者接口,而且還定義了增加和删除觀察者的方法。

4.具體主題類:

獵頭招聘項目中的觀察者模式解析

隻需實作當有崗位資訊時通知觀察者接口,通知所有已注冊的觀察者。

觀察者模式的優點

1.由于被觀察者和觀察者沒有緊密地耦合在一起,是以它們可以屬于不同的抽象化層次。

2.觀察者模式支援廣播通信。

觀察者模式的缺點

1.如果一個被觀察者對象有很多直接和間接的觀察者的話,将所有的觀察者都通知到會花費很多時間。

2.雖然觀察者模式可以随時使觀察者知道所觀察的對象發生了變化,但是觀察者模式沒有相應的機制使觀察者知道所觀察的對象是怎麼發生變化的。

獵頭招聘項目中的觀察者模式解析