관찰자 모드 소개

관찰자 모델은 메시지 트리거에서 광범위하게 응용된다. 즉, 대상이 어떤 동작을 하면 여러 관찰자가 트리거를 받아들이고 각자의 동작을 선택한다.
관찰자 모델에는 주로 [관찰자 대상]과 [피관찰 대상]이 있다.
[관찰자 대상] 자신의 동작의 실시를 책임지고 [피관찰 대상] 관찰자의 등록, 삭제, 통지를 책임진다.
다음 구체적인 코드
관찰자 인터페이스
public interface Observer {

	//           ,          
	public void watch (String arg1, String arg2);
}

피관찰 대상 인터페이스
public interface Subject {

	public void addObserver (Observer observer);
	
	public void deleteObserver (Observer observer);
	
	public void notifyObserver ();
}

관찰자 A와 관찰자 B
public class ObserverA implements Observer {

	@Override
	public void watch(String arg1, String arg2) {
		System.out.println("   A,    ");
	}

}
public class ObserverB implements Observer {

	@Override
	public void watch(String arg1, String arg2) {
		System.out.println("   B,    ");
	}

}

구체적인 피관찰 대상
public class RealSubject implements Subject{

	Set<Observer> observerSet = new HashSet<Observer>();
	
	@Override
	public void addObserver(Observer observer) {
		observerSet.add(observer);
	}

	@Override
	public void deleteObserver(Observer observer) {
		observerSet.remove(observer);
	}
	
	@Override
	public void notifyObserver() {
		for (Observer ob : observerSet) {
			ob.watch("", "");
		}
	}

}

테스트 클래스
public class Ex {

	public static void main (String [] args) {
		ObserverA oa = new ObserverA();
		ObserverB ob = new ObserverB();
		
		RealSubject rs = new RealSubject();
		rs.addObserver(oa);
		rs.addObserver(ob);
		rs.notifyObserver();
	}
}

좋은 웹페이지 즐겨찾기