[Design Pattern] MVC(Model-View-Controller) ํจํด ์ด์ผ๊ธฐ #1
MVC ํจํด์ ํ์์ฑ
๋์์ธ ํจํด์ ์๊ธฐ ์ ์๋ ํ๋์ ํด๋์ค ์์ ์จ๊ฐ ์ฝ๋๊ฐ ์กด์ฌํ์์ต๋๋ค. ๊ธฐ๋ฅ๋ณ๋ก ๊ทธ๋ฆฌ๊ณ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์๋ฌด๋ฆฌ ๋ชจ๋ํ ํ์๋ค๊ณ ํ๋ค, ์๋ฅผ ๋ค์ด ๋ฒํผ ์ปจํธ๋กค์ ์ด๋ฒคํธ์, ์จ๊ฐ ๋ชจ๋๋ค์ด ๋ค์ฃฝ๋ฐ์ฃฝ ์์ฌ ์ง์ ๋ถํ ์ฝ๋๋ก ๊ฐ๋ํ์ต๋๋ค. ์ด๋ฌํ ์ฝ๋๋ ๊ฐ๋ฐ์ ๋ณธ์ธ์ด ์ ์ง๋ณด์ํ๊ธฐ์๋ ๋ณต์กํ๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ํฌ์ ๋๋ฉด ๋ถ์ํ๊ธฐ๊ฐ ์ด๋ ต๊ณ ์ ์ง๋ณด์ ํ๊ธฐ์ ์ ๋ง ๋ง๋งํด์ง ๊ฒ์ ๋๋ค.
ํ์ง๋ง MVC ํจํด์ด ์ ์ฉ๋๋ฉด ์ด๋จ๊น์? ์ฐ์ MVC ํจํด์ ๋ํด ๊ฐ๋จํ ์์ฝํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
Model: ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ, ์๋ฃ๋ฅผ ์๋ฏธํฉ๋๋ค.
View: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ถ๋ถ, ์ฆ ์ ์ ์ธํฐํ์ด์ค(User interface)๋ฅผ ์๋ฏธํฉ๋๋ค.
Controller: Model๊ณผ View์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ๋ธ๋ฆฟ์ง(Bridge)์ญํ ์ ์๋ฏธํฉ๋๋ค.
์ฆ, ์ญํ ์ ๋ฐ๋ผ ํ์คํ๊ฒ ๋ถ๋ฆฌํ์ฌ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ด๊ธฐ ์ํ ๊ธฐ๋ฒ์ ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฉด Model ๋ถ๋ถ๋ง ์์ ํ๊ณ , UI๊ฐ ์์ ๋๋ฉด View ๋ถ๋ถ๋ง ์์ ํฉ๋๋ค. ๋ฌผ๋ก Controller๋ ๋ ๋ถ๋ถ์ ๊ด์ฅํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์์ ์ด ํ์ํ๊ธด ํฉ๋๋ค. ํ์ง๋ง ๊ธฐ์กด์ฒ๋ผ ๋ฉ์ธ ๋ค์ด์ผ๋ก๊ทธ/ํผ์์์ ๋ฌด๋ถ๋ณํ ํ๋ ์ฝ๋ฉ์ด ํ์ ์๋ค๋ ๊ฒ์ด์ฃ .
์ผ๋จ, MVC ํจํด์ ์ด๋ ์ต๋๋ค. ๊ทธ๋๋ ๊ฐ์ด ์์ค์ค ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ค๋ช ์ด ๋ถ์กฑํ๊ธฐ๋ ํ๊ณ , ์ฌ์ค ๊ธ๋ณด๋ค๋ ์ฝ๋๋ฅผ ๋ณด๋๊ฒ์ด ์ ์ผ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ณธ๋ฌธ์ ์ด์ด ์์ ์ฝ๋๋ ๋ค๋ฃฐ ์์ ์ด๋, ๊ฐ์ด ์ฝ์ด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
Model-View-Controller
๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ์ ๋ํด ์ข ๋ ์์ธํ ์๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
๋ชจ๋ธ(Model)
ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB), ์์, ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ณ์๋ค, ๋น์ ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ์นด๋ฉ๋ผ ์ ๋ณด์ ๊ฐ์ ๊ฒ๋ค์ด ํด๋น๋ฉ๋๋ค. ๋ชจ๋ธ์๋ ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ์ ๋ณด๊ฐ ์ ํ ์์ต๋๋ค. ๋จ์ง, ์ ๋ณด๋ง ๋ฐํํ๊ฑฐ๋ ์ค์ ํ ์ ์์ต๋๋ค.
๋ทฐ(View)
๋ค์ด์ผ๋ก๊ทธ์ ์กด์ฌํ๋ ํ ์คํธ๋ฐ์ค, ๋ผ๋ฒจ, ๋ฒํผ ๋ฑ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(User interface) ์์๋ค์ ์๋ฏธํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ์ดํ๊ณ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ ์์ญ์ ๋๋ค. ๋ทฐ์์๋ ๋ณ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ์ง ์์ต๋๋ค. ๋ทฐ์์ ์ ๋ ฅ๋ฐ๊ณ ์ถ๋ ฅํด์ฃผ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์ ์ฌ์ฉํด์ผํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller)
๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๊ด์ฅํ๋ ๋ธ๋ฆฟ์ง(Bridge)์ญํ ์ ์ํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ด๋ฒคํธ๋ ๋ทฐ์์ ๋ฐ์ํ์ง๋ง ๋ด๋ถ ์ฒ๋ฆฌ๋ ์ปจํธ๋กค๋ฌ์์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๋ํ, ์ ๋ ฅ์ด ๋ฐ์ํ๋ฉด ์ด์ ๋ํ ํต์ง๋ฅผ ๋ด๋นํฉ๋๋ค.
์ MVC๋ฅผ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
'Programming > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Design Pattern] ๋์์ธ ํจํด ์๊ฐ (์ถ์ฒ ๋์ ํฌํจ)
[Design Pattern] ๋์์ธ ํจํด ์๊ฐ (์ถ์ฒ ๋์ ํฌํจ)
2019.10.06 -
[Design Pattern] MVC(Model-View-Controller) ํจํด ์ด์ผ๊ธฐ #2 (์์ ํฌํจ)
[Design Pattern] MVC(Model-View-Controller) ํจํด ์ด์ผ๊ธฐ #2 (์์ ํฌํจ)
2019.10.01 -
[Design Pattern] ์ต์ ๋ฒ ํจํด(Observer Pattern) ์ด์ผ๊ธฐ #2 (์์ ํฌํจ)
[Design Pattern] ์ต์ ๋ฒ ํจํด(Observer Pattern) ์ด์ผ๊ธฐ #2 (์์ ํฌํจ)
2019.09.23 -
[Design Pattern] ์ต์ ๋ฒ ํจํด(Observer Pattern) ์ด์ผ๊ธฐ #1 (์์ ํฌํจ)
[Design Pattern] ์ต์ ๋ฒ ํจํด(Observer Pattern) ์ด์ผ๊ธฐ #1 (์์ ํฌํจ)
2019.09.12