2016년 4월 1일 금요일

Design Pattern Digest - 17. Observer

이글은 책 "Java언어로 배우는 디자인 패턴 입문"을 읽고 쓴 요약입니다. 
나만 이해하도록 불친절하게 작성되어 있습니다. 
자세한 내용은 책을 보세요. 


Observer




  • Android에 많이 쓰는 Observer들과 유사하다. (e.g. GUI의 action listener들)
  • Observer interface를 구현한 ConcreteObserver 클래스를 Subject에 등록하면 Subject의 내부 상태 변화나 이벤트 발생시 등록된 Observer들을 모두 호출하여 준다. (Publish-Subscribe 모델이기도 하다)
  • Subject의 상태 변화 메소드를 Observer가 호출하는 것과 같이 Subject의 상태를 변화시킬 수 있는데 이 경우 Observer 호출 도중에 다시 Observer를 호출하는 무한 호출 오류가 발생할 수 있다. 따라서 한 turn의 호출이 완료될 수 있도록 상태변수를 두는 것이 좋다.
  • Subject도 interface로서 Observer들이 다양한 형태의 ConcreteSubject들의 변화를 통보 받을 수 있도록 한다.


댓글 없음:

댓글 쓰기