한 객체의 상태 변화에 따라 다른 객체의 상태로 연동되도록 일대다 객체 의존 관계를 구성하는 패턴
데이터의 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으며너 데이터 변경을 통보하고자 할 때 유용!
→ 모바일 프로그래밍에서 EventListener
를 사용했던 경험이 해당된다.
객체들이 상호작용할 수는 있지만 서로 영향을 잘 받지 않는 관계로, 유연성이 아주 좋은 관계다.
예를 들면 옵저버 패턴에서 Subject는 Observer가 특정 인터페이스를 구현한다는 사실만 안다.
: 구상 클래스가 어떠한 형태인지, 무슨 동작을 하는지는 알 필요가 없다!
또한 Observer는 언제든 새로 추가할 수도, 삭제할 수도 있다.
: 이 과정에서 Subject는 전혀 영향을 받지 않고 계속해서 남은 옵저버에게 데이터를 보낼 수 있다.
이 모든 게 느슨한 결합 덕분!