์์ฑ์ : ๊น์ฐ์
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํจํด์ ์๋ฏธํฉ๋๋ค.
ํผ์ ๊ฐ๋ฐํ ๋์ ๋นํด ์ฌ๋ฌ ์ฌ๋์ด ํ์ ํ์ฌ ์์ ํ ๋ ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค๊ธฐ ์ฝ๊ณ ์ต์ ํ ์ํค๊ธฐ๋ ์ด๋ ค์ฐ๋ฏ๋ก ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์์ธ ํจํด์ ์ฌ์ฉํฉ๋๋ค.
๋์์ธ ํจํด์ ์์ฌ์ํต ์๋จ์ ์ผ์ข ์ผ๋ก์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค๋๋ค.
Model + View + Controller
๊ตฌ์กฐ
- Model : ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค.
- View : ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI ๋ถ๋ถ์ ๋๋ค.
- Controller : ์ฌ์ฉ์์ ์ ๋ ฅ(Action)์ ๋ฐ๊ณ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค.
๋์
MVC ํจํด์ ๋์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์์ Action๋ค์ Controller์ ๋ค์ด์ค๊ฒ ๋ฉ๋๋ค.
- Controller๋ ์ฌ์ฉ์์ Action์ ํ์ธํ๊ณ , Model์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- Controller๋ Model์ ๋ํ๋ด์ค View๋ฅผ ์ ํํฉ๋๋ค.
- View๋ Model์ ์ด์ฉํ์ฌ ํ๋ฉด์ ๋ํ๋ ๋๋ค.
* MVC์์ View๊ฐ ์ ๋ฐ์ดํธ ๋๋ ๋ฐฉ๋ฒ
- View๊ฐ Model์ ์ด์ฉํ์ฌ ์ง์ ์ ๋ฐ์ดํธ
- Model์์ View์๊ฒ Notify ํ์ฌ ์ ๋ฐ์ดํธ
- View๊ฐ Polling์ผ๋ก ์ฃผ๊ธฐ์ ์ผ๋ก Model์ ๋ณ๊ฒฝ์ ๊ฐ์งํ์ฌ ์ ๋ฐ์ดํธ
ํน์ง
Controller๋ ์ฌ๋ฌ๊ฐ์ View๋ฅผ ์ ํํ ์ ์๋ 1:n ๊ตฌ์กฐ์
๋๋ค.
Controller๋ View๋ฅผ ์ ํํ ๋ฟ ์ง์ ์
๋ฐ์ดํธ ํ์ง ์์ต๋๋ค. (View๋ Controller๋ฅผ ์์ง ๋ชปํฉ๋๋ค.)
์ฅ์
MVC ํจํด์ ์ฅ์ ์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๋์์ธ ํจํด์ด๋ผ๋ ์ ์ ๊ฑธ๋ง๊ฒ ๊ฐ์ฅ ๋จ์ํฉ๋๋ค.
๋จ์ํ๋ค ๋ณด๋ ๋ณดํธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์
๋๋ค.
๋จ์
MVC ํจํด์ ๋จ์ ์ View์ Model ์ฌ์ด์ ์์กด์ฑ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค. View์ Model์ ๋์ ์์กด์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปค์ง์๋ก ๋ณต์กํด์ง๊ณ ์ ์ง๋ณด์์ ์ด๋ ค์์ ์ผ๊ธฐํฉ๋๋ค.
MVP ํจํด์ Model + View + Presenter๋ฅผ ํฉ์น ์ฉ์ด์ ๋๋ค. Model๊ณผ View๋ MVC ํจํด๊ณผ ๋์ผํ๊ณ , Controller ๋์ Presenter๊ฐ ์กด์ฌํฉ๋๋ค.
๊ตฌ์กฐ
- Model : ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค.
- View : ์ฌ์ฉ์์์ ๋ณด์ฌ์ง๋ UI ๋ถ๋ถ์ ๋๋ค.
- Presenter : View์์ ์์ฒญํ ์ ๋ณด๋ก Model์ ๊ฐ๊ณตํ์ฌ View์ ์ ๋ฌํด ์ฃผ๋ ๋ถ๋ถ์ ๋๋ค. View์ Model์ ๋ถ์ฌ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๋์
MVP ํจํด์ ๋์ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์์ Action๋ค์ View๋ฅผ ํตํด ๋ค์ด์ค๊ฒ ๋ฉ๋๋ค.
- View๋ ๋ฐ์ดํฐ๋ฅผ Presenter์ ์์ฒญํฉ๋๋ค.
- Presenter๋ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- Model์ Presenter์์ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ตํฉ๋๋ค.
- Presenter๋ View์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋ตํฉ๋๋ค.
- View๋ Presenter๊ฐ ์๋ตํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด์ ๋ํ๋ ๋๋ค.
ํน์ง
Presenter๋ View์ Model์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ด ๋์ ์ฐ๊ฒฐํฉ๋๋ค.
Presenter์ View๋ 1:1 ๊ด๊ณ์
๋๋ค.
์ฅ์
MVP ํจํด์ ์ฅ์ ์ View์ Model๊ฐ์ ์์กด์ฑ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. MVP ํจํด์ MVC ํจํด์ ๋จ์ ์ด์๋ View์ Model์ ์์กด์ฑ์ ํด๊ฒฐํ์์ต๋๋ค.(Presenter๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ๊ธฐ ๋๋ฌธ)
๋จ์
MVC ํจํด์ ๋จ์ ์ธ View์ Model ์ฌ์ด์ ์์กด์ฑ์ ํด๊ฒฐ๋์์ง๋ง, View์ Presenter ์ฌ์ด์ ์์กด์ฑ์ด ๋์ ๋จ์ ์ด ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ด ๋ณต์กํด์ง ์๋ก View์ Presenter ์ฌ์ด์ ์์กด์ฑ์ด ๊ฐํด์ง๋ ๋จ์ ์ด ์์ต๋๋ค.
MVVM ํจํด์ Model + View + View Model์ ํฉ์น ์ฉ์ด์ ๋๋ค. Model๊ณผ View๋ ๋ค๋ฅธ ํจํด๊ณผ ๋์ผํฉ๋๋ค.
- Model : ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค.
- View : ์ฌ์ฉ์์์ ๋ณด์ฌ์ง๋ UI ๋ถ๋ถ์ ๋๋ค.
- View Model : View๋ฅผ ํํํ๊ธฐ ์ํด ๋ง๋ View๋ฅผ ์ํ Model์ ๋๋ค. View๋ฅผ ๋ํ๋ด ์ฃผ๊ธฐ ์ํ Model์ด์ View๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ถ๋ถ์ ๋๋ค.
๋์
MVVM ํจํด์ ๋์ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์์ Action๋ค์ View๋ฅผ ํตํด ๋ค์ด์ค๊ฒ ๋ฉ๋๋ค.
- View์ Action์ด ๋ค์ด์ค๋ฉด, Command ํจํด์ผ๋ก View Model์ Action์ ์ ๋ฌํฉ๋๋ค.
- View Model์ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- Model์ View Model์๊ฒ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ตํฉ๋๋ค.
- View Model์ ์๋ต ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์ ์ฅํฉ๋๋ค.
- View๋ View Model๊ณผ Data Bindingํ์ฌ ํ๋ฉด์ ๋ํ๋ ๋๋ค.
ํน์ง
MVVM ํจํด์Command ํจํด๊ณผData Binding๋ ๊ฐ์ง ํจํด์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋์์ต๋๋ค.
Command ํจํด๊ณผ Data Binding์ ์ด์ฉํ์ฌ View์ View Model ์ฌ์ด์ ์์กด์ฑ์ ์์ด์ต๋๋ค.
View Model๊ณผ View๋ 1:n ๊ด๊ณ์ ๋๋ค.
์ฅ์
MVVM ํจํด์ View์ Model ์ฌ์ด์ ์์กด์ฑ์ด ์์ต๋๋ค. ๋ํ Command ํจํด๊ณผ Data Binding์ ์ฌ์ฉํ์ฌ View์ View Model ์ฌ์ด์ ์์กด์ฑ ๋ํ ์๋ ๋์์ธ ํจํด์ ๋๋ค. ๊ฐ๊ฐ์ ๋ถ๋ถ์ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ํ ํ์ฌ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
๋จ์
MVVM ํจํด์ ๋จ์ ์ View Model์ ์ค๊ณ๊ฐ ์ด๋ ต๋ค๋ ์ ์ ๋๋ค.