๊ธฐ์ ๊ด์ธก ์ฅ๋น๋ก ๋ถํฐ, ๊ธฐ์ ๊ด์ธก ์ ๋ณด๊ฐ ๋๋ฌํ๋ฉด ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๋์คํ๋ ์ด์ ๋ณด์ฌ์ฃผ๋ ์๋น์ค ๊ตฌ์ฑ ๋ฌธ์
์๋ก์ด ๊ธฐ์ ๊ด์ธก ์ ๋ณด๊ฐ ๋ฐ์ํ๋ฉด measurementsChanged() ๋ผ๋ ํจ์๊ฐ ํธ์ถ ๋๋๊ฒ์ด ์ฝ์๋์ด ์์
์จ๋, ์ต๋, ์๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ํ๋ฉด 3๊ฐ๊ฐ ์์
์์ ์ฝ๋
class WeatherData {
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)
}
}
์ ์ฝ๋์ ๊ตฌ์กฐ์์ , ์๋ก์ด ๋์คํ๋ ์ด ํญ๋ชฉ์ด ์ถ๊ฐ๋ ๋ ๋ง๋ค ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํจ
<aside> ๐ก ํ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ ๋์์ ๋, ๋ค๋ฅธ ๊ฐ์ฒด ( Observer )๋ค์๊ฒ update ์ ํธ๋ฅผ ๋ณด๋ด๊ณ , ์ต์ ๋ฒ๊ฐ ์ ํธ๋ฅผ ๋ฐ์์ ๋ ๊ทธ์ ๋ง์ถฐ ๋ด์ฉ์ด ๊ฐฑ์ ๋๋ ๋ฐฉ์
</aside>
addObserver , deleteObserver ๋ฑ์ ํจ์๊ฐ ์ด๋ฏธ ๊ตฌํ๋์ด ์์<aside> ๐ก ์๋ก ์ํธ์์ฉ์ ํ๋ ๊ฐ์ฒด ์ฌ์ด์์๋ ๊ฐ๋ฅํ๋ฉด ๋์จํ๊ฒ ๊ฒฐํฉํ๋ ๋์์ธ์ ์ฌ์ฉํด์ผ ํจ
</aside>