MDN > MVC
๐ Model-View-Controller Pattern, GUI๋ก ๊ตฌ์ฑ๋ SW์ ์ข์ Maintainability (์ ์ง๋ณด์์ฑ)์ ๊ฐ๊ธฐ ์ํ ํ๋์ ํด๊ฒฐ์ฑ

- ๋ชฉ์ : SW Complexity (SW Crisis)
- โญ UI์ ๋ณํ๊ฐ Non-UI = Model์๊ฒ ์ ํ๋์ง ์๋๋ก ํ๊ธฐ ์ํจ โก Non-UI์ ๊ฒฝ์ฐ UI์ Interface๋ง ์๊ณ UI์ Module๊ณผ๋ ๋ ๋ฆฝ์ฑ ๊ฐ์ง (UI๋ Non-UI ์์๋ ์๊ด ์์)
- Non-UI์ ๋นํด UI๋ ๋ณํ๊ฐ ์ฆ์
- ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํํ์ View๋ก ๋ณด์ฌ์ค์ผ ํ๋ ์ํฉ ์กด์ฌ
- UI ์๋ ๋นจ๋ผ์ผ ํ๋ค๋ ์ ์ฝ ์กด์ฌ
- ๋ฐฉ๋ฒ ๋ฐ ๋ชฉํ: Separation of Concerns (๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ) โก ํต์ฌ ๋น์ฆ๋์ค ๋ชจ๋ธ, ๋ฐ์ดํฐ์ ํํ, ์ปจํธ๋กค ๋ก์ง์ ๋ถ๋ฆฌ
- โค๏ธ ์ฅ์
- ๐ ๋จ์
๊ตฌ์ฑ
MVC๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ ์ฒด System์ด ํฌ๊ฒ ์ธ ํํธ๋ก ๋๋์ด์ง
Model
๐ ๋ฐ์ดํฐ, ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๊ณ ์๋ ๊ฐ์ฒด
- ๋์์ธ ํจํด: Observer
- ์ ์ฝ
- UI์ ๋ ๋ฆฝ์ โก Unit (Module) Test ์ฌ์
- ๋น ๋ฅธ ์๋ โ Model ์ํ ์๋ฃ๋ ๋๊น์ง View๊ฐ ๋ฉ์ถ๊ฒ ๋จ
View
๐ Model์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ฐ์ฒด
- ์๋์ โก Controller์๊ฒ ์ฌ์ฉ์ ์ธํ ํด์์ ์์, Model์ State ๋ณํ์ ๋ฐ๋ผ ๋ ๋๋ง
- ํจํด: Strategy
Controller
๐ ์ฌ์ฉ์ ์ธํ์ ๋ฐ์ Model์ ์ ๋ฐ์ดํธํ๊ณ , ํด๋น ๋ฐ์ดํฐ๋ฅผ View๋ก ์ ๋ฌํ๋ ์ํธ ์์ฉ์ ์ํ ๊ฐ์ฒด
- Model์ API๋ฅผ ์ ์ ํ ํธ์ถ
- UI ๊ธฐ๋ฅ ๋น ํ๋์ฉ ์์ฑ
- ํจํด: Composite (๋ณตํฉ์ฒด)
Litmus Test
๐ UI Layer์์ View์ Controller์ ๊ตฌ๋ถ์ด ๋ชจํธํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
