일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- NextJS
- design pattern
- 프로그래머스 자바
- 장고
- 코딩테스트 고득점 Kit 완전탐색
- React JS
- useState
- 코딩테스트 고득점 Kit
- websocket
- 백준
- 리액트
- 프로그래밍 언어론
- Java
- 코틀린
- useEffect
- 컴퓨터 네트워크
- 자바 공부
- react firebase
- JavaScript
- react hook
- 디자인 패턴
- 리액트 훅
- react
- 자바스크립트
- 데이터모델링과마이닝
- 프로그래머스 완전탐색
- 프로그래머스
- vanillaJS
- codesandbox
- 자바
- Today
- Total
기록하는 개발자
3. Observer Pattern 본문
문제
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라고도 함
'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 |