본문
160209P(화) - Head First Disign Patterns (Observer Pattern)
Head First Disign Patterns - Observer Pattern
옵저버 패턴(Observer Pattern)
- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다.
- 보통 subject interface, observer interface 를 바탕으로 한다.
디자인 원칙 [
- Loose coupling
· 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
]
※ Observer를 implementaion한 class에서 subject에 관한 reference를 가지고 있으면 탈퇴 등에 유용하게 쓰일 수 있다.
푸시 방식
subject가 observer에게 데이터를 보내는 방식
풀 방식
observer가 subject의 데이터를 마음대로 가져가는 방식
자바 내장 옵저버 패턴
- java.util.observable 클래스
- subject에서 extends해서 사용
1. setChanged()를 호출해서 객체의 상태가 바뀜을 알린다.
2. notifyObservers() 또는 notifyObservers(Object arg) 호출
- java.util.observer interface
- observer에서 implements해서 하용
1. update(Observable o, Object arg) 호출
단점
1. Observable은 클래스
· 확장성과 재사용성에 문제
· observer와 잘 맞는 클래스의 구현이 거의 불가
· setChanged()가 protected이므로 핵심메소드를 외부에서 호출 불가
※ Observer에게 연락이 가는 순서는 변할 수 있다. 의존하지 말것.
'Architecture > 디자인 패턴' 카테고리의 다른 글
160214P(일) - Head First Disign Pattern (Factory Pattern) (0) | 2016.02.14 |
---|---|
160210P(수) - Head First Disign Pattern (Decorater Pattern) (0) | 2016.02.10 |
160302P(월) - Head First Design Patterns (Strategy Pattern) (0) | 2016.02.08 |
댓글