cleanUrl: /posts/design-pattern-observer

이 내용은 Head First 의 옵저버 패턴 챕터를 읽고 작성한 글 입니다.

제가 작성한 코드는 저의 깃헙에서 확인할 수 있습니다!

WeatherData 클래스를 열어봅시다.

요구사항

class WeatherData {
	getTemperature();
	getHumidity();
	getPressure();
	measurementsChanged();
}
  1. WeatherData 클래스에 온도, 습도, 기압을 알아내기 위한 getter 메소드가 있다.
  2. 새로운 측정 데이터가 나올 때 마다 measurementsChaged() 메소드가 호출된다.
  3. 기상 데이터를 사용하는 3개의 display 항목을 구현해야 한다.
  4. 시스템 확장이 가능해야 한다. 다른 개발자들이 별도의 display 항목을 만들 수 있도록 해야 하고 사용자들이 애플리케이션에 마음대로 항목을 추가/제거 할 수 있도록 해야한다.

옵저버 패턴 → 출판사(subject) + 구독자(observer)

옵저버 패턴의 정의

정의: 한 object 의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 갱신되는 방식으로 1:N 의존성을 정의한다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c13112fd-2713-45d0-a1b9-4714bd7c5ad7/Screen_Shot_2020-12-29_at_14.34.35.png

신문사가 신문을 발행하고 구독자가 그 신문을 구독하는 프로세스와 비슷하다 → 구독, 구독 취소, 발행 등등

느슨한 결합(Loose coupling 의 위력)

→ 느슨한 결합: 상호작용은 하는데 서로 잘 모르는 사이이다.