Java 관찰자 모드 쉽게 파악

정의: 객체 간에 일대다 관계가 있을 때 관찰자 모드(Observer Pattern)를 사용합니다.예를 들어 대상이 수정되면 의존 대상을 자동으로 알려준다.
특징:
1. 관찰자와 피관찰자는 추상적인 결합이다.
2. 촉발 메커니즘을 구축한다.
기업급 개발 및 상용 프레임워크에서의 응용: 자바 자체 관찰자 클래스, servlet의 filter, 분포식 메시지 대기열
인스턴스:

public class Demo {

 public static void main(String[] args) {
 ActualSubject subject = new ActualSubject();
 
 ObserverA o1 = new ObserverA();
 ObserverA o2 = new ObserverA();
 ObserverA o3 = new ObserverA();
 
 // 
 subject.addObserver(o1);
 subject.addObserver(o2);
 subject.addObserver(o3);
 
 subject.setNews(" ");
 
 }
}

/**
 *  
 */
interface Observer{
 public void update(Subject subject);
}

/**
 *  ,  
 */
class Subject{
 private List<Observer> list = new ArrayList<>();
 public void addObserver(Observer o){
 list.add(o);
 }
 public void removeObserver(Observer o){
 list.remove(o);
 }
 public void notifyAllObserver(){
 for(Observer o:list){
  o.update(this);
 }
 }
}

class ActualSubject extends Subject{
 private String news;
 public void setNews(String news) {
 this.news = news;
 System.out.println(" , ");
 notifyAllObserver();
 }
 public String getNews() {
 return news;
 }
}

class ObserverA implements Observer{
 private String news;
 public void update(Subject subject) {
 setNews(((ActualSubject)subject).getNews());
 System.out.println(" , , ");
 System.out.println(getNews());
 }
 public String getNews() {
 return news;
 }
 public void setNews(String news) {
 this.news = news;
 }
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기