본문 바로가기
Programming

[Programming] Observer Design Pattern

by 2__50 2020. 7. 11.

Observer Design Pattern 

 

출처: https://steemit.com/design-patterns/@slawas/design-patterns-observer

- 게시, 구독 패턴이라고도 불린다.

- 한 객체(Subject)의 상태게 바뀌면 그 객체가 의존하는 다른 객체들(Observers)한테 연락이 가 자동으로 내용이 갱신되는 방식.

- 일대다(1 : 多) 의존성 관계

 

구조 다이어그램

+------------------+
| Subject          |
+------------------+
| Attach(Observer) |
| Detach(Observer) |  +----------------------+
| Notify() -----------| for o in observers { |
+------------------+  |    o -> Update()     |
                      | }                    |
                      +----------------------+
                      

// - Subject에 여러 Observer를 등록(Attach)해 두고, Notify를 하게 되면
// 루프를 돌면서 각 Observer를 Update하는 패턴이다.

 

디자인 원칙

- 서로 상호작용하는 객체 사이에는, 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.

 

1) subject가 Observer객체에 대해 아는 것은 오직 Observer가 특정 Interface를 구현한다는 것 뿐이다.

2) Observer객체의 추가/제거는 언제든지 할 수 있다.

3) Subject와 Observer는 서로 독립적으로 재사용할 수 있다.

 

장점

- Subject객체와 Observer객체는 서로 독립적이며 결합도가 낮다.

- 어떤 데이터가 바뀔 때마다 작업이 필요한 경우 유용하다.

( React에서는, 서로 연결되진 않았지만 데이터가 동기화 되어 있으면 하는 두 component가 존재할 때 유용하다.)

 

단점

동일한 작업이 서로 다른 Observer객체에 의해 반복 수행될 수 있다.

 

 

 

 

도움을 준 정보들

 

칼럼:

https://www.slideshare.net/dragor0123/observer-pattern-dragor

 

Observer pattern dragor

Headfirst Design Pattern study. ch2. ObserverPattern

www.slideshare.net

https://johngrib.github.io/wiki/observer-pattern/

 

옵저버 패턴(Observer Pattern)

상태 변화를 감시자에게 통지한다

johngrib.github.io

https://delivan.dev/react/programming-patterns-with-react-hooks-kr/

 

[번역] React Hooks로 알아보는 디자인 패턴

이 글은 Adam Hannigan이 작성한 Programming Patterns with React Hooks를 번역한 글입니다. 원 글에서는 ‘Programming Pattern’이라는 말을 사용하는데, ‘디자인 패턴’이라는 단어가 우리에게 더 친숙하고 의��

delivan.dev

https://www.slideshare.net/joonjhokil/observer-pattern-152125284

 

Observer pattern

2019년 6월 27일 코드스쿼드에서 옵저버 패턴에 대해서 발표한 자료입니다.

www.slideshare.net

 

댓글