Observer Pattern
원하는 작업이 변경되는 것을 관찰하고 있다가, 관찰하는 작업이 변경될 때 원하는 작업을 수행하는 형태
why? 사용해야 할까?
- 두 객체가 서로 느슨하게 연결됨 → 유연한 객체지향 시스템 구축
⇒ 두 연견된 객체들 사이의 결합도가 낮아짐!!
when? 언제 사용할까?
- 값이 변경됨에 따라 피드백이 바로 나와야하는 프로그램
- 특정 값에 변경이 발생할 때 연쇄적으로 해당 값을 참조하는 값들을 자동적으로 변경이 이루어져야 할 때
- 주로 MVC에서 사용(but 저는 떠구처럼 MVVM식으로 해봤어요)


- Subject(Publisher)
- Observer들을 가짐
- Observer들을 추가, 제거, 알림하는 인터페이스 제공
- Observer(Subscriber)
- 객체의 변경사항을 알려야하는 객체에 대한 update 제공
간단한 Observer 예시
⇒ 솝트의 OB 모집을 한다는 것을 알려야 되는 상황이라고 가정합시다!
1) Publisher
protocol Publisher {
var observers: [Observer] { get set}
func subscribe(observer: Observer)
func unSubscribe(observer: Observer)
func notify(message: String)
}
2) Observer