옵저버 패턴 : 중요한 일이 일어 났을 때 객체들에게 새 소식을 알려주는 패턴
옵저버 패턴의 예시
구독 서비스 (넷플릭스)
3명의 사용자(김레드, 이블루, 최핑크)가 있습니다.
김레드는 현재 넷플릭스를 구독하고 있고
이블루는 구독중인 넷플릭스를 해지하였습니다.
또한 최핑크는 넷플릭스를 구독하려고 합니다.
이때, 넷플릭스가 주제가 되어지며, 넷플릭스의 구독자가 옵저버가 되어집니다
위의 상황일때 넷플릭스의 가격이 천원 인상이 되어질때, 구독중인 김레드에게만 천원 인상 알림이 가게 되어집니다.
이블루와, 최핑크는 현재 넷플릭스를 구독하지 않는 사용자로 옵저버가 아니기에 연락을 받지 못합니다.
-------------------------------------------------------------------------------
옵저버 패턴의 정의
옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다.
[출처 : 위키백과 https://ko.wikipedia.org/wiki/%EC%98%B5%EC%84%9C%EB%B2%84_%ED%8C%A8%ED%84%B4]
이와 같이 한 객체의 상태가 바뀔때 그에게 의존되는 객체에게 해당 내용이 갱신되는 일대다 형태입니다
여기서 의존 되는 객체는 옵저버로써, 주제에게 의존하게 됩니다.
옵저버가 될 가능성이 있는 객체는 만드시 observer 인터페이스를 구현해야함
해당 인터페이스는 객체가 바꼈을때 알려주는 notify() 메소드만 있음
-----------------------------------------------------------------------------------------------
옵저버 패턴의 장/단점
장점
- 개방/폐쇄 원칙 : 주제의 코드를 변경할 필요 없이 새로운 옵저버 클래스를 도입할 수 있음
단점
- 옵저버에게 임의의 순서로 통지된다.
'IT > Etc.' 카테고리의 다른 글
[개념] 페이로드(Payload)란? (0) | 2022.05.18 |
---|---|
[디자인패턴] 데코레이터 패턴 (0) | 2021.01.22 |
[디자인패턴 ] 싱글턴 패턴 (0) | 2021.01.22 |
[디자인패턴] 디자인 패턴이 중요할까? (0) | 2021.01.15 |
디자인패턴 (0) | 2021.01.15 |