옵서버 패턴 - 위키백과, 우리 모두의 백과사전 옵서버 패턴 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 옵서버 패턴 ( observer pattern ) 은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행 / 구독 모델로 알려져 있기도 하다. 목차 1 구현 2 대표적인 사례 3 사례 4 예제 4. 1 자바 4. 2 C # 5 각주 6 외부 링크 구현 [ 편집 ] 이 패턴의 핵심은 옵저버 또는 리스너 ( listener ) 라 불리는 하나 이상의 객체를 관찰 대상이 되는 객체에 등록시킨다
옵저버 또는 리스너 ( listener ) 라 불리는 하나 이상의 객체를 관찰 대상이 되는 객체에 등록시킨다. 그리고 각각의 옵저버들은 관찰 대상인 객체가 발생시키는 이벤트를 받아 처리한다. UML 다이어그램으로는 아래처럼 표현된다. 관찰 대상인 객체는 " 이벤트를 발생시키는 주체 " 라는 의미에서 Subject로 표시되어 있다. 이벤트가 발생하면 각 옵저버는 콜백 ( callback ) [ 1 ] 을 받는다. notify 함수는 관찰 대상이 발행한 메시지 이외에, 옵서버 자신이 생성한 인자값을 전달할 수도 있다. 각각의 파생 옵서버는 notify 함수를 구현함으로써 이벤트가 발생했을 때 처리할 각자의 동작을 정의해야 한다. 주체에는 일반적으로 등록 ( register ), 제거 ( unregister )
Handler ; / / 옵저버가 발행 주체가 발행하는 이벤트를 구독하게 함 evSrc. addObserver ( respHandler ) ; / / 이벤트를 발행시키는 쓰레드 시작 Thread thread = new Thread ( evSrc ) ; thread. start ; } } C # [ 편집 ] using System ; / / 먼저 이벤트 발생에 사용할 델리게이트 형식을 선언한다. / / 이것은 System. EventHandler 형식과 같은 델리게이트이다. / / 이 델리게이트는 추상 옵저버로서의 기능을 제공한다. / / 어떠한 구현도 제공하지 않으며, 단지 규약만 제공한다. public delegate void EventHandler ( object sender, EventArgs e ) ; / / 다음으로, 공개된 이벤트를 선언한다
싱글턴 구조 패턴 [UNK] 브리지 컴포지트 데코레이터 퍼사드 플라이웨이트 프록시 동작 패턴 책임 연쇄 커맨드 인터프리터 반복자 중재자 메멘토 옵서버 상태 전략 템플릿 메소드 비지터 동시성 패턴 액티브 오브젝트 Balking Binding properties en : Double - checked locking Event - based asynchronous en : Guarded suspension 조인 락 모니터 ( 동기화 ) Proactor 반응자 패턴 Read write lock 스케줄링 ( 컴퓨팅 ) 스레드 풀 en : Thread - local storage 아키텍처 패턴 프론트 컨트롤러 Interceptor 모델 - 뷰 - 컨트롤러 다층 구조 Specification 발행 - 구독 모델 en : Naked objects Service locator Active record Identity map 데이터 접근 객체 데이터 전송 객체 ADR 제어
ton - Clicked ( object sender, EventArgs e ) { / / 이 메서드는 Button 클래스에서 Clicked ( this, e ) 를 호출할 때마다 실행된다. } } 각주 [ 편집 ] ↑ 이것은 옵서버 클래스 내에 정의된 가상 함수이거나 함수 포인터이다. 함수 포인터는 흔히 함수 객체 또는 함수자 ( functor ) 로 불린다. 옵저버로 등록된 객체에 인자를 전달한다 외부 링크 [ 편집 ]. NET에서 옵서버 패턴 쓰기 정의 및 UML 다이어그램 잘 다듬어진 옵서버에 대한 토론 vdeh소프트웨어 디자인 패턴Gang of four 패턴생성 패턴 추상 팩토리 빌더 팩토리 메서드 프로토타입 싱글턴 구조 패턴 [UNK] 브리지 컴포지트 데코레이터 퍼사드 플라이웨이트 프록시 동작 패턴 책임 연쇄 커맨드 인터
println ( " [UNK] nReceived Response : " resp ) ; } } } / * 파일명 : myapp. java * / / * 여기서부터가 프로그램 시작점 * / package obs ; public class MyApp { public static void main ( String args [ ] ) { System. out. println ( " Enter Text > " ) ; / / 이벤트 발행 주체를 생성함 - stdin으로부터 문자열을 입력받음 final EventSource evSrc = new EventSource ; / / 옵저버를 생성함 final ResponseHandler respHandler = new ResponseHandler ; / / 옵저버가 발행 주체가 발행하는 이벤트를 구독하게 함 evSrc. add
[UNK] 中 文 링크 편집 이 문서는 2019년 4월 15일 ( 월 ) 04 : 08에 마지막으로 편집되었습니다. 모든 문서는 크리에이티브 커먼즈 저작자표시 - 동일조건변경허락 3. 0에 따라 사용할 수 있으며, 추가적인 조건이 적용될 수 있습니다. 자세한 내용은 이용 약관을 참고하십시오. [UNK] 미국 및 다른 국가에 등록되어 있는 Wikimedia Foundation, Inc. 소유의 등록 상표입니다. 개인정보 정책 위키백과 소개 면책 조항 개발자 쿠키 정책 모바일 보기
뷰 사이를 느슨히 연결하기 위해 사용된다. 대표적으로 모델에서 일어나는 이벤트를 통보받는 옵저버는 뷰의 내용을 바꾸는 스위치를 작동시킨다. 사례 [ 편집 ] 옵서버 패턴은 여러 프로그래밍 라이브러리와 시스템에서 구현되는데 거의 모든 GUI 툴킷도 해당한다. 이 패턴이 쓰인 주목할 만한 사례 몇 가지 : Java Swing 라이브러리는 이벤트 관리를 위해 옵서버 패턴을 광범위하게 사용했다. Boost. Signals, 시그널 / 슬롯 ( signal / slot ) 모델을 제공하기 위해 C STL을 확장했다. C 프레임워크의 시그널 / 슬롯 모델인 QT libsigc, C 시그널링 템플릿 라이브러리 GLib, C로 객체와 시그널 / 콜백을 구현. 이 라이브러리는 다른 프로그래밍 언어에서 쓰기 위해 많은 바인딩 방법을 갖고 있
. 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 ) { final String response = br. readLine ; setChanged ; notifyObservers ( response ) ; } } catch ( IOException e ) { e. printStackTrace ; }
) ; } } catch ( IOException e ) { e. printStackTrace ; } } } / * 파일명 : ResponseHandler. java * / package obs ; import java. util. Observable ; import java. util. Observer ; / * 여기가 옵저버 * / 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 ( " [UNK] nReceived Response : " resp ) ; } } } / * 파일
옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다.