내 가 일 하 는 그 점 - 인 스 턴 스 응용 (Observer 모드) 배우 기

오늘 아침 에 회사 에 도착 하 자마자 회사 인사 들 이 보 낸 메 일 을 보고 오후 에 회 의 를 하 라 고 통 지 했 습 니 다. 지금 은 인사 도 비교적 편리 합 니 다. 현대 과학 기술 을 이용 하여 한 명 씩 직접 통지 하지 않 아 도 됩 니 다. 예전 에 어 렸 을 때 학교 에 가서 대장 이 되 었 던 것 을 기억 하 세 요. 만약 에 어떤 활동 이 있 으 면 칠판 에 적 혀 있 습 니 다. 가끔 은 직접 통지 해 야 합 니 다. 매우 귀 찮 습 니 다.어른 들 은 내 공부 에 지장 을 줄 까 봐 이런 활동 에 참가 하지 못 하 게 할 까 봐 걱정 하고 있 습 니 다. 혁 혁 혁 씨, 지금 은 전혀 그 럴 필요 가 없 을 것 같 습 니 다.
   그 동안 디자인 모델 을 배 웠 는데 이 방식 은 나 로 하여 금 Observer 모델 을 생각 나 게 했다. 이 모델 은 너무 뚜렷 하 다. 말하자면 한 사람 이 어떤 변화 소식 이 있 으 면 자동 으로 다른 사람 에 게 알 리 는 것 이다.
   이 예 에서 알 수 있 듯 이 인 사 는 Observable 이 고 동 료 는 각 Observer 이다.
   자바 의 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<list.size();i++){
Observer observer = (Observer)list.get(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
역시 펠 로 우 원 은 메 시 지 를 받 지 못 했다.

좋은 웹페이지 즐겨찾기