ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 행위패턴 : Observer 패턴
    디자인패턴 2013. 3. 4. 09:00
    반응형

    분류 : 행위패턴(Behavioral Patterns)


    정의 :

    observer(옵저버, 관찰자)라고하는 종속성 목록을 관리하고, 목록에 속한 객체들에게 상태 변화를 통지하는 객체를 이용하는 패턴.

    용도 :

    분산 이벤트 핸들링 시스템에서 주로 사용됨.

    MVC(Model-View-Controller) 아키텍처 패턴에서 중용한 역할을 함.




    소스

    import java.util.Observable;          //Observable is here
    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();
            }
        }
    }
    
    
    import java.util.Observable;
    import java.util.Observer;  /* this is Event Handler */
     
    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();
        }
    }
    
    
    


    참고자료

    http://en.wikipedia.org/wiki/Observer_pattern

    반응형

    '디자인패턴' 카테고리의 다른 글

    행위패턴 : Strategy 패턴  (0) 2013.03.18
    행위패턴 : State 패턴  (0) 2013.03.11
    행위패턴 : Memento 패턴  (0) 2013.02.28
    행위패턴 : Mediator 패턴  (0) 2013.02.28
    행위패턴 : Iterator 패턴  (0) 2013.02.27

    댓글

Designed by Tistory.