옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하여 자동으로 내용이 갱신되는 일대다 의존성을 가진 디자인 패턴이다.
사용
•
분산 이벤트 핸들링 시스템
•
이벤트 기반 프로그래밍
특정 행동이 자동으로/순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반응으로 동작
장점
1.
실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있다. (트위터, 유튜브)
2.
느슨한 결합(Loose Coupling)을 사용한다.
단점
1.
너무 많이 사용할 경우 상태 관리가 힘들 수 있다.
2.
데이터 배분에 문제가 발생하면 큰 문제로 발전할 수 있다.
Loose Coupling
•
클래스/클래스를 느슨하게 결합되어 새로운 기능을 개발하거나 기존 기능을 수정하고 확장하는게 쉽다.
•
유지 보수가 쉽다.
•
메모리 사용을 줄일 수 있다.
이것을 사용하는 장점으로는
1.
옵저버를 언제든 새로 추가, 제거할 수 있다.
2.
새로운 형식의 옵저버라 할 지라도 주제를 전혀 변경할 필요가 없다.
3.
주제와 옵저버는 서로 독립적으로 재사용 할 수 있다.
4.
주제나 옵저버가 바뀌더라도 서로에게 영향을 미치지 않는다.
참고자료