6. Observer Pattern (옵저버 패턴)
- 용도 :
관찰 대상의 상태가 변화했을 때 관찰자에게 통지하는 패턴이다.
상태 변화에 따른 처리를 기술할 때 효과적으로 활용
요약 :
한 객체(A)의 상태가 바뀌면
그 객체(A)에 의존하는 다른 객체들(B, C, D ...)한테
자동으로 내용이 갱신되는 방식. 즉, 1:N 의존성을 정의한다!
- 사용방법 :
Observer 클래스에 상태 변화를 알려주고,
Observer는 다시 그 변화에 맞는 결과를 나타낸다.
C#에서는 Delegate와 같다! Delegate가 곧 이 옵저버 패턴!
Delegate를 사용하면 옵저버 객체들을 리스트로 관리할 필요가 없다!
ex1)
구조 :
- Observer abstract 클래스
- ConcreteObserver1 클래스 : Observer
- ConcreteObserver2 클래스 : Observer
- ISubject 인터페이스
- ConcreteSubject 클래스 : ISubject
ex2)
구조 :
1.ConcreteSubject 클래스
나머지는 예제1) 과 동일
위 사진과 같이 델리게이트에 그저 옵저버의 OnNotify 함수를 등록시킬 뿐이다!
장점 :
ex1)에서 처럼 개별적으로 리스트에 옵저버 객체들을 저장해두고 for문 돌려 일일이 옵저버들의 OnNotify를 실행시켰던 것과 달리 간단하다!