옵저버 패턴
시작
습도, 온도, 기압을 수집하는 기상 스테이션,
기상 스테이션으로부터 오는 정보를 추적하는 WeatherData 라는 객체,
사용자에게 현재 기상 조건을 보여주는 디스플레이 장비 이렇게 3가지 요소가 있다고 생각해보자.
WeatherData 객체는 물리 기상 스테이션과 통신해서 갱신된 기상 데이터를 가져와야 하고, 그 데이터를 디스플레이 장비에 보여주어야한다.
디스플레이를 업데이트 하기위해 우선 WeatherData 객체를 구현해보자.
우선 WeatherData 객체에는 아래의 4가지 메서드가 있다.
- getTemperature() - 온도값을 리턴하는 메서드
- getHumidity() - 습도값을 리턴하는 메서드
- getPressure() - 기압값을 리턴하는 메서드
- measurementsChanged() - 기상 관측값이 갱신될 때마다 호출되며 디스플레이를 업데이트하는 메서드
상위 3가지 메서드는 일반적인 getter 메서드이고, 디스플레이를 업데이트하는 measurementsChanged() 메서드를 구현해보자.
단, 새로운 디스플레이가 추가된다거나 등의 앱의 지속적인 변화가 일어날 수 있다는 가정하에, 추후 확장성을 고려하여 생각해보자.