"옵저버 패턴"의 두 판 사이의 차이

잔글 (→‎개요)
3번째 줄: 3번째 줄:
;옵저버 패턴
;옵저버 패턴
*상태 변화를 알려주도록 하는 패턴
*상태 변화를 알려주도록 하는 패턴
*등록한 객체들에게 통보해주는 패턴
*옵저버<ref>=리스너(listener)</ref>들을 등록해두어 상태변화가 있을 때 통지받는 패턴
*옵저버<ref>=리스너(listener)</ref>들을 등록해두어 상태변화가 있을 때 통지받는 패턴
*[[발행-구독 모델]]을 따르는 디자인 패턴
*[[발행-구독 모델]]을 따르는 디자인 패턴

2013년 2월 25일 (월) 21:10 판

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 }}