MVC
๐ก ๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ(model–view–controller, MVC)
: ์ํํธ์จ์ด ๊ณตํ์์ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธํจํด
์ด ํจํด์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก๋ถํฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ์์๋ ๊ทธ ์ด๋ฉด์์ ์คํ๋๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ก ์ํฅ ์์ด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค. MVC์์ ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ณด(๋ฐ์ดํฐ)๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ทฐ๋ ํ ์คํธ, ์ฒดํฌ๋ฐ์ค ํญ๋ชฉ ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ๋ํ๋ด๊ณ , ์ปจํธ๋กค๋ฌ๋ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง ์ฌ์ด์ ์ํธ๋์์ ๊ด๋ฆฌํ๋ค.
MODEL
์ ๋ณด๋ค์ ๊ฐ๊ณต์ ์ฑ ์์ง๋ ์ปดํฌ๋ํธ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ ํ ๋ชจ๋ธ์ ๋ณ๊ฒฝ์ฌํญ์ ์ปจํธ๋กค๋ฌ์ ๋ทฐ์ ์ ๋ฌํ๋ค. ํ์ ํ์์ ์์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ ์ด๋ป๊ฒ ๋ณด์ผ์ง์ ๋ํด ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
- ์ฌ์ฉ์๊ฐ ํธ์งํ๊ธธ ์ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
- ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ๋ํด์ ์ด๋ค ์ ๋ณด๋ ์์ง ๋ง์์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด, ๋ณ๊ฒฝ ํต์ง์ ๋ํ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๊ตฌํํด์ผ๋ง ํ๋ค.
VIEW
์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ถ๋ถ, ์ฆ ์ ์ ์ธํฐํ์ด์ค(User interface)๋ฅผ ์๋ฏธํ๋ค. MVC์์ ๋ชจ๋ธ์ ์ฌ๋ฌ ๊ฐ์ ๋ทฐ(view)๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ณด์ฌ์ค ๊ฐ(๋ชจ๋ธ)์ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ๋ฐ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
- ๋ชจ๋ธ์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํด์๋ ์ ๋๋ค.
- ๋ชจ๋ธ์ด๋ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ด ๋ค๋ฅธ ๊ตฌ์ฑ์์๋ค์ ๋ชฐ๋ผ์ผ ๋๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝํต์ง์ ๋ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๊ตฌํํด์ผ๋ง ํ๋ค.
CONTROLLER
๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ๋ค๋ฆฌ์ญํ ์ ํ๋ค. ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๊ณ , ๋ชจ๋ธ์ ๊ทธ ์ ๋ ฅ์ ์ ๋ฌํ๋ฉฐ, ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ทฐ์ ์ ๋ฌํ๋ค.
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ํด์ ์๊ณ ์์ด์ผ ํ๋ค.
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ณ๊ฒฝ์ ๋ชจ๋ํฐ๋ง ํด์ผ ํ๋ค.
๐ก MVCํจํด์ ์ฌ์ฉํ๋ ์ด์ (์ฅ์ )
: ๋ชจ๋์ ๊ฒฐํฉ๋(Coupling)๋ ๋ฎ์ถ๊ณ ์์ง๋(Cohesion)๋ฅผ ์ฌ๋ฆด ์ ์๋ค.
๊ฒฐํฉ๋๊ฐ ๋๋ค๋ ๊ฒ์ ์์กด์ฑ์ด ๋๋ค๋ ๊ฒ์ด๊ณ , ์์กด์ฑ์ด ๋์์๋ก ์ฝ๋ ํ๋๋ฅผ ์์ ํ๋ฉด ๊ทธ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์ฝ๋๋ค๋ ๋ชจ๋ ์์ ํด์ค์ผ ํ๋ค. MVC ํจํด์ ๊ฐ์ง ์์คํ ์ ๊ฐ ์ปดํฌ๋ํธ๋ ์์ ์ด ๋งก์ ์ญํ ๋ง ์ํํ ํ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก ๊ฒฐ๊ณผ๋ง ๋๊ฒจ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์์คํ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.
์์ง๋๋ ๋ ๋ฆฝ์ฑ๊ณผ ๋ฐ์ ํ ์ฐ๊ด์ด ์๋ค. '์์ง'์ ์ฌ์ ์ ์๋ฏธ๋ "ํ๊ตฐ๋ฐ์ ์๊ฒจ์ ๋ชจ์ด๋ ๊ฒ"์ผ๋ก ์๋ก ๊ด๋ จ์๋ ์์๋ค์ ์์ง๋์ ๋ ๋ฆฝ์ฑ์ด ๋์์ง๋๋ก ์๋ง๊ฒ ๋๋์ด์ผ ํ๋ค. ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋, ๊ทธ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํจ ๊ณณ์์ ์ฒ๋ฆฌํ์ฌ ํผํด๊ฐ ์ต์ํ๋ ์ ์๋๋ก ํด์ผํ๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ์๋ฌ๊ฐ ๋ฐ์ํ ๊ณณ๋ง ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ ๋ฆฝ์ฑ์ด ๋์์๋ก ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ธฐ๊ฐ ์ฌ์์ง๋ค.
์ถ์ฒ
https://junhyunny.github.io/information/design-pattern/mvc-pattern/
'MVC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022-11-17 MVC, ์์ฒญ ์ฌ์ง์ (0) | 2022.11.17 |
---|---|
2022-11-16 MVC, ์์ฒญ ์ฌ์ง์ (0) | 2022.11.16 |
2022-11-15 ์๋ธ๋ฆฟ ๋ฉ์๋ ๋ถ๋ฆฌํ๊ธฐ(delete), jsp๋ฌธ๋ฒ (0) | 2022.11.15 |
2022-11-14 ์๋ธ๋ฆฟ ๋ฉ์๋ ๋ถ๋ฆฌํ๊ธฐ, DB์ ์ฐ๊ฒฐํ๊ธฐ (0) | 2022.11.14 |
๋๊ธ