기상 모니터링 어플리케이션 알아보기
- 기상 스테이션(실제 기상 정보를 수집하는 물리 장비), WeatherData 객체(기상 스테이션으로 부터 오는 정보를 추적하는 객체), 사용자에게 현재 기상 조건을 보여주는 디스플레이 장비 3가지 요소로 이루어진 시스템을 만들어야함!
WeatherData 클래스
- 온도, 습도, 기압 3가지 측정값이 새롭게 들어올 때마다 measurementsChanged()가 호출됨
- 새로운 값이 들어올 때마다 WeatherData에서 디스플레이를 업데이트하기 위해서 어떻게 해야 할까?
- 현재 조건, 기상 통계, 기상 예보를 보여주는 3가지 디스플레이가 업데이트 되도록 measurementsChanged()를 바꿔아함!
구현 목표
- WeatherData 클래스에는 3가지 측정값(온도, 습도, 기압)의 게터 메소드가 있다.
- 새로운 기상 측정 데이터가 들어올 때마다 measurementsChanged() 메소드가 호출된다.
- 기상 데이터를 사용하는 디스플레이 요소 3가지를 구현해야 한다.
- 디스플레이를 업데이트하도록 measurementsChanged() 메소드에 코드를 추가해야 한다.
- +) 확장성 : 변화를 위해서 확장성을 염두해두고 짜야함
public class WeatherData
{
public void measurementsCahnged()
{
float tmp = getTempreature();
float humidity = getHumidity();
float pressure = getPressure();
currentCOnditionsDisplay.update(tmp, humidity, pressure);
statisticsDisplay.update(tmp, humidity, pressure);
forecastDisplay.update(tmp, humidity, pressure);
}
}
위코드는
- 인터페이스가 아닌 구체적인 구현을 바탕으로 코딩하고 있다.
- 새로운 디스플레이 항목이 추가될 때마다 코드를 변경해야한다.
- 실행 중에 디스플레이 항목을 추가하거나 제거할 수 없다.
- 바뀌는 부분을 캡슐화하지 않았다.