기록하는 개발자

3. Observer Pattern 본문

3-2/고급객체지향프로그래밍(디자인패턴)

3. Observer Pattern

밍맹030 2021. 1. 14. 15:27
728x90

문제

1:n 관계에서의 정보 갱신

해결 방안

사용자를 등록하고, 정보가 변경되는 경우를 알려주고 값을 자동으로 갱신

목적

- observer pattern은 일종의 push 서비스를 구현

- 객체간 1:다 의존 관계를 정의함.

-1개 객체 상태가 변경될 때,  그 객체와 의존관계에 있는 모든 객체들이 자동으로 알림을 받고 상태를 갱신 한다.

 

결과

느슨한 커플링, 확장성

 

느슨한 커플링(Loose coupling)

 : 두 객체가 느슨하게 결합되어 있다는 것은, 그 둘이 상호작용을 하긴 하지만

   서로에 대해 잘 모른다는 것을 의미한다.

 

·observer pattern 에서는 Subject와 Observer 간 느슨한 결합이 만들어진다.

 -Subject가 Observer에 대해서 아는 것은 특정 인터페이스를 구현한다는 것 뿐이다.

  →Observer를 구현하는 실제 클래스가 무엇인지, Observer의 역할이 무엇인지 몰라도 된다.

 -새로운 Observer는 쉽게 추가하거나 제거가 가능한다.(실행 중에도 가능)

 -Observer가 새로 생겨도 Subject가 바뀌지 않는다.

 -Subject와 Observer는 독립적으로 재사용이 가능하다.

 

설계

인터페이스 분리

구체적인 클래스 상속

클라이언트는 구체적인 클래스 보다는 추상 클래스 사용 후 상속

 

정보 제공자(Subject)

 상태가 변경되면 알림 기능(notify)

 알림 대상이 되는 observer를 사전 등록(register)

 Observer 또는 Publisher라고도 함

 

정보 수신자(Observer)

 정보 제공자의 상태가 변경되면 그 내용을 받아서 반영(update)

 Subscriber라고도 함

728x90

'3-2 > 고급객체지향프로그래밍(디자인패턴)' 카테고리의 다른 글

6. Singleton Pattern  (0) 2021.01.14
5. Factory Pattern  (0) 2021.01.14
4. Decorator Pattern+예제  (0) 2021.01.14
2. Strategy Pattern  (0) 2021.01.14
1. OOP, SOLID 원칙  (0) 2021.01.14