위 두 객체가 서로의 정보를 넘기고 받는 과정에서,
정보의 단위가 클수록, 객체들의 규모가 클수록 -> 각 객체간의 복잡도가 놓아지고 구현이 어려워지는 문제가 있다.
위와 같이 동작하는 Observer Pattern이란,
객체의 상태 변화를 관찰하는 옵저버들의 목록을 객체에 등록해, 상태변화가 있을 때마다 메서드를 통해 객체가 직접 옵저버에 통지하도록 하는 디자인패턴이다.
이 패턴은 분산 이벤트 핸들링 시스템, MVC 패턴, 안드로이드-OnClickListener, 안드로이드-LiveData 등에서 사용되고 있다.
옵저버는 서브젝트에 update API만 제공한다. 서브젝트는 옵저버가 특정 인터페이스를 구현한다는 정보만 가지고있다.
따라서, 옵저버는 언제든 추가, 제거를 할 수 있다. 또, 새로운 형식의 옵저버가 추가되어도 서브젝트에 전혀 영향을 주지 않는 느슨한 결합을 갖고있다.
이는 SOLID 원칙의 OCP, LSP, DIP를 만족한다!
다음 Repository에서 예제를 확인해주세요