我工作的那點事--學習《設計模式》例項應用(Observer模式)
今天早上一到公司,看到公司人事群發過來的郵件,通知下午開會,現在人事也比較方便的,利用現代科技,不用一個個當面通知了,記得以前小時候上學當大隊長那會,假如有什麼活動,還寫在小黑板上呢,有時候還要一個個當面通知,非常麻煩的,大人們都擔心耽誤我的學習,不讓參加這些活動,赫赫,現在看來完全沒有這個必要的。
這段時間學習設計模式,這個方式一下子讓我想起了 Observer 模式,這個模式太明顯了,說白了,就是一個人有什麼變化訊息,自動通知其他人。
[@more@]從這個例子中,可以看出 人事就是 Observable,同事就是各個Observer了。
Java的JDK中有對這個模式的封裝,不過個人覺得為了深刻理解,自己寫了個。
1。人事
//定義介面
public interface Observable {
public void registerObserver(Object object);
public void removeObserver(Object object);
public void notifyObservers();
public void setInfo(String info);
public String getInfo();
}
public class HRObservable implements Subject {
List list = new ArrayList();
String info = "";
//為了讓新員工註冊
public void registerObserver(Object object){
list.add(object);
};
//如果有員工離職了,一定要記得把他從名單中刪掉啊
//不然他還是可以得到公司的一些資訊的
public void removeObserver(Object object){
int i = list.indexOf(object);
if(i>=0){
list.remove(i);
}
};
//有什麼事情在這裡通知了
public void notifyObservers(){
for(int i=0;i
observer.upData(info);
}
};
//設定通知資訊
public void setInfo(String info){
this.info = info;
notifyObservers();
};
//假如員工沒有收到,自己也可以到hr處獲得相關資訊
public String getInfo(){
return info;
};
}
2.員工
public interface Observer {
public void upData(String info);
}
//員工one,這裡相當於有個接受的介面,相當於信箱之類的。
public class FellowOne implements Observer {
public void upData(String info){
System.out.println("now FellowOne gets a message from HR:"+info);
};
}
//員工Two,這裡相當於有個接受的介面,相當於信箱之類的。
public class FellowTwo implements Observer {
public void upData(String info){
System.out.println("now FellowTwo gets a message from HR:"+info);
};
}
3.一切都準備好了,下面看看我們的HR怎麼通知開會的吧:
public void testMyObserver() {
Subject subject = new HRSubject();
Observer one = new FellowOne();
Observer two = new FellowTwo();
subject.registerObserver(one);//員工one註冊
subject.registerObserver(two);//員工two註冊
subject.setInfo("now having a meeting");//通知開會了
//如果有人離職了,怎麼辦呢
System.out.println("fellowOne has lefe");
subject.removeObserver(one);
subject.setInfo("now having a meeting talk about FellowOne leaving");
}
5.看看結果吧:
now FellowOne gets a message from HR:now having a meeting
now FellowTwo gets a message from HR:now having a meeting
fellowOne has lefe
now FellowTwo gets a message from HR:now having a meeting talk about FellowOne leaving
果然FellowOne得不到資訊了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9879276/viewspace-987662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我工作的那點事--學習《設計模式》例項應用(strategy模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Mediator模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(factory模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Prototype模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Builder模式)設計模式UI
- 我工作的那點事--學習《設計模式》例項應用(decorator模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Singleton模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Adapter模式)設計模式APT
- 我工作的那點事--學習《設計模式》例項應用(composite模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Facade模式)設計模式
- 設計模式應用之Observer模式(2)設計模式Server
- 設計模式應用之Observer模式(1)設計模式Server
- 設計模式----Observer模式設計模式Server
- 我學設計模式 之 單例模式設計模式單例
- 設計模式學習-單例模式設計模式單例
- 設計模式學習之單例模式設計模式單例
- 應用Observer介面實踐Observer模式Server模式
- 設計模式:觀察者模式(observer)設計模式Server
- 設計模式應用舉例設計模式
- 我的Java設計模式-單例模式Java設計模式單例
- 設計模式快速學習(三)單例模式設計模式單例
- 設計模式學習筆記——單例模式設計模式筆記單例
- JavaScript設計模式學習之單例模式JavaScript設計模式單例
- 小學生學習設計模式之單例模式設計模式單例
- 從JavaScript學習設計模式-02單例模式JavaScript設計模式單例
- 設計模式學習筆記之單例模式設計模式筆記單例
- C++學習隨筆——簡單的單例設計模式例項C++單例設計模式
- Android 設計模式の單例模式——應用最廣的模式Android設計模式單例
- 設計模式學習(一)單例模式補充——單例模式析構設計模式單例
- 看了設計模式之Observer設計模式Server
- Java:應用Observer介面實踐Observer模式薦JavaServer模式
- 設計模式之觀察者模式(Observer Pattern)設計模式Server
- 設計模式學習筆記(九)橋接模式及其應用設計模式筆記橋接
- 設計模式學習筆記(十二)享元模式及其應用設計模式筆記
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 設計模式學習-使用go實現單例模式設計模式Go單例
- 重學設計模式-單例模式設計模式單例
- 《我是面試官》設計模式-單例模式面試設計模式單例