| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- JavaScript
- 성수
- 헤드퍼스트
- JAVA개발자
- 오브젝트
- 클린코드
- 객체지향
- 독서일지
- docker
- 독서
- 깨끗한코드
- 개발자
- Java
- 직장인
- 객체지향프로그래밍
- 직장인점심
- 주니어개발자
- 헤드퍼스트디자인패턴
- 책너두
- DesignPattern
- 성수볼거리
- 성수맛집
- 상속
- 성수핫플
- 코딩
- 책읽기
- 성수직장인
- IntelliJ
- Linux
- 디자인패턴
- Today
- Total
런타임노트
[헤드퍼스트 디자인패턴] 5일차. 70-86p 본문
5일차
헤드퍼스트 디자인패턴 [금요일]
70-86pg
요약
CHAPTER 02. 객체들에게 연락돌리기 (feat. 옵저버 패턴)
옵저버 패턴 : 뭔가 중요한 일이 일어났을 때 객체에게 새 소식을 알려 줄 수 있는 패턴!
Story…
차세대 인터넷 기반 기상 스테이션 구축 프로젝트
WeatherData 객체를 바탕으로 기상 스테이션을 만들 예정
WeatherData 객체는 현재 기상조건을 추적한다.
표시할 3개의 항목 : 현재 조건, 기상 통계, 간단한 기상 예보
→ 위 항목 모두 WeatheData에서 최신 측정치를 수집할 때마다 실시간으로 갱신 됨.
타 개발자가 새로운 날씨 디스플레이를 쉽게 추가할 수 있도록 해야함.
[ 기상 모니터 애플리케이션 ]
- 기상 스테이션 : 실제 기상정보를 수집하는 물리 장비
- WeatherData 객체 : 기상 스테이션으로부터 오는 정보를 추적하는 객체
- 디스플레이 장비 : 사용자에게 현재 기상조건을 보여주는 디스플레이 장비
→ 1,2는 weather-O-Roma에서 제공, 3은 우리가 구현
→ WeatherData객체와 디스플레이를 통합하는 작업도 우리가
WeatherData 클래스 살펴보기.
: 기상 스테이션에서 갱신된 정보를 가졍는 일은 weatherData 객체가 알아서 해준다는 점 알기.
: weatherData에서 갱신된 값을 가져올 때마다 measurementsChanged() 메소드가 호출된다는 점 기억하기.
기능을 구현하기 위해 우리가 해야할 목표 정하기
** 소프트웨어 개발에서 바뀌지 않는 단 하나 : 변화!
나중에 기상 스테이션이 더 발전하면 디스플레이가 더 늘어날 수도 있으니 ‘확장 기능’을 추가해보자.
→ 확장성
코드살펴보기
public void measurementsChanged() {
float temp = getTemperature();
float humidity = getHumidity();
float pressure = getPressure();
// 아래 세 줄은 바뀔 수 있는 부분이니 캡슐화 해야한다.
currentConditionDisplay.update(temp, humidity, pressure);
statisticsDisplay.update(temp, humidity, pressure);
forecastDisplay.update(temp, humidity, pressure);
}
- 구체적인 구현에 맞춰서 코딩했으므로 디스플레이 항목을 추가하거나 제거할 수 없다.
- update() 메소드를 가지고 있으니 공통 인터페이스를 사용하긴 한다.
옵저버 패턴 이해하기 : 신문 구독
신문사 + 구독자 = 옵저버 패턴
신문사는 주제(subject), 구독자는 옵저버(observer)
발췌
💡 옵저버 패턴 : 뭔가 중요한 일이 일어났을 때 객체에게 새 소식을 알려 줄 수 있는 패턴!
신문사 + 구독자 = 옵저버 패턴
메모
코드를 하나하나 보면서 생각해볼 수 있어서 좋다.
인터페이스, 캡슐화 등에 대해 했는지 안했는지 체크 할 수 있어서 복습해서 좋다.
'책책책 책을 읽읍시다‼ ver.개발 > [ 헤드퍼스트 디자인패턴 ]' 카테고리의 다른 글
| [헤드퍼스트 디자인패턴] 7일차. 102-113pg (0) | 2023.05.02 |
|---|---|
| [헤드퍼스트 디자인패턴] 6일차. 87-101p (0) | 2023.05.02 |
| [헤드퍼스트 디자인패턴] 4일차. 56-69p (0) | 2023.04.28 |
| [헤드퍼스트 디자인패턴] 3일차. 41-55p (0) | 2023.04.27 |
| [헤드퍼스트 디자인패턴] 2일차. 26~40p (1) | 2023.04.25 |