옵저버 패턴

Jmnote (토론 | 기여)님의 2013년 2월 26일 (화) 00:17 판 (→‎같이 보기)

1 개요

observer pattern
옵저버 패턴
  • 상태 변화를 알려주도록 하는 패턴
  • 어떤 일이 생기면 미리 등록한 객체들에게 통보해주는 패턴
  • 옵저버[1]들을 등록해두어 상태변화가 있을 때 통지받는 패턴
  • 발행-구독 모델을 따르는 디자인 패턴

Observer.svg

2 예제

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class EventSource extends Observable implements Runnable {
    public void run() {
        try {
            final InputStreamReader isr = new InputStreamReader(System.in);
            final BufferedReader br = new BufferedReader(isr);
            while (true) {
                String response = br.readLine();
                setChanged();
                notifyObservers(response);
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public class ResponseHandler implements Observer {
    private String resp;
    public void update(Observable obj, Object arg) {
        if (arg instanceof String) {
            resp = (String) arg;
            System.out.println("\nReceived Response: " + resp );
        }
    }
}

public class MyApp {
    public static void main(String[] args) {
        System.out.println("Enter Text >");
 
        // create an event source - reads from stdin
        final EventSource eventSource = new EventSource();
 
        // create an observer
        final ResponseHandler responseHandler = new ResponseHandler();
 
        // subscribe the observer to the event source
        eventSource.addObserver(responseHandler);
 
        // starts the event thread
        Thread thread = new Thread(eventSource);
        thread.start();
    }
}

3 같이 보기

4 주석

  1. =리스너(listener)

5 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}