2021. 1. 14. 01:10ใ๐ง๐ป๐ป iOS ๊ฐ๋ฐ/iOS
ํด๋น ๊ฒ์๊ธ์ ๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ์ ๋ฆฌํ ๊ฒ์ผ๋ก ๋ถ์กฑํ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค.
MVC design pattern
MVC ๋์์ธ์ ๊ฐ์ฅ ๋๋ฆฌ ์๋ ค์ง ์ํํธ์จ์ด ๋์์ธ ํจํด ์ค ํ๋๋ก์ ์ ํ๋ฆฌ์ผ์ด์ ์ Model - View - Controller ์ธ ๊ฐ์ง์ ํํธ๋ก ๋๋์ด ๋ค๋ฃน๋๋ค. MVC ํจํด์ ํต์ฌ์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ณด์ฌ์ง๋ ๋ ์ด์ด(UI)๋ฅผ ๋ถ๋ฆฌํ์ฌ ์๊ฐ์ ์์์ ๊ทธ ์ด๋ฉด์์ ์คํ๋๋ ๋ก์ง์ ์๋ก์ ์ํฅ ์์ด ์ฝ๊ฒ ์์ ์ด ๊ฐ๋ฅํ๊ฒ๋ ํ๋ ๊ฒ์ ๋๋ค.
Model (๋ชจ๋ธ)
๋ชจ๋ธ์ ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ฌด์จ ์ผ์ ํ๋์ง๋ฅผ ์ ์ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค, ์๊ณ ๋ฆฌ์ฆ, ๋ก์ง ๋ฑ์ด ๋ชจ๋ธ์ด ๋ฉ๋๋ค. ๋ชจ๋ธ ์์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ง์ ์ปจํธ๋กค๋ฌ์๊ฒ ๊ฐ์ ์ ๋ฌํ๋ ๊ฒ์ด ์๋ ๋ธ๋ก๋์บ์คํ (Noticication or KVO: Key Value Observing) ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ณํ๋ฅผ ์๋ฆฝ๋๋ค.
View (๋ทฐ)
๋ทฐ๋ ์ ์ ๊ฐ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ๋ ํฉ๋๋ค. ์ปจํธ๋กค๋ฌ์ ์ข ์์ ์ด๋ฉฐ ํ ์คํธ, ๋ฒํผ , ์ฐจํธ ๋ฑ ์ฌ์ฉ์ UI๋ฅผ ๋ํ๋ ๋๋ค. ๋ทฐ๋ ์์ ์ด ์ถ๋ ฅํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์๊ณ ์ปจํธ๋กค๋ฌ์๊ฒ ํญ์ ์์ฒญํด์ผ ํฉ๋๋ค. ๋ทฐ์์ ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ๋ณํ๊ฐ ์๊ธฐ๋ฉด Action์ ์ปจํธ๋กค๋ฌ์๊ฒ Target์ ๋ง์ถ์ด ๋ณด๋ ๋๋ค. ๋ํ ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ๋๊ธฐํ ํ๊ธฐ์ํด์ ๋ฏธ๋ฆฌ ์ ์๋ delegate ๋ฉ์๋๋ฅผ ํตํด ์ปจํธ๋กค๋ฌ์ ์ ๋ ฅ์ ๋ํ ๋ค์ ๋์์ ๋ํด ์ํตํฉ๋๋ค. ๋ทฐ์ Datasource ๋ฉ์๋๋ ์ปจํธ๋กค๋ฌ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ ๋ทฐ์์ ๋ณด์ฌ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ต๋๋ค.
Controller (์ปจํธ๋กค๋ฌ)
๋ทฐ์ ๋ชจ๋ธ์ ๊ด๋ฆฌํ๋ฉฐ ๋ทฐ๋ก๋ถํฐ ๋ค์ด์จ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ ํ ์ง๋ฅผ ์๋ ค์ฃผ๋ ์ญํ ์ด๋ฉฐ, ๋ทฐ๋ฅผ ์ํด ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํด์ํ๊ณ ์ด๋ป๊ฒ ๋ชจ๋ธ์ด UI๋ก ํํ๋ ์ง๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ์ฉ์์ ์์ฒญ ๋ด์ฉ์ ๋ถ์ํด์ ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ๋ชจ๋ธ์ ๋ณํ๋ฅผ ์์ ํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค.
M - V - C ๊ฐ์ ์ํต
- ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ๋ทฐ์ ๋ชจ๋ธ์ ๋ฌด์กฐ๊ฑด ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฑฐ์ณ์ ์ํตํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ํต์ ํฉ๋๋ค.
- ๋ทฐ์ ๊ฐ์ฒด๋ค์ ์ปจํธ๋กค๋ฌ์ ๋ํด ์์ง ๋ชปํ๊ณ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ปจํธ๋กค๋ฌ์ ์ํตํฉ๋๋ค.
MVC design pattern ์ ์ฅ์
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ฅผ ์ธ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ง์ถ์ด ๋ถ๋ฆฌํ๊ณ ๊ฐ๋ฐํ๊ธฐ ๋๋ฌธ์ ๋์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๋ณด์, ํ์ฅ์ฑ, ์ฝ๋์ ์ฌ์ฌ์ฉ ๋ฑ์ด ์ฌ์์ง๋๋ค.
MVC design pattern์ ํ๊ณ
๋ณดํต ์ด๋ฌํ ์ฌ๋ฌ MVC๊ฐ ๋ชจ์ฌ์ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋๋๋ฐ ๋ง์ฝ ํ๋ฉด ๊ตฌ์ฑ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์ฑ์ด ๋ณต์กํด์ง ๊ฒฝ์ฐ ๊ฒฝ์ฐ ํ๋์ ์ปจํธ๋กค๋ฌ์ ๋ค์์ ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ ์ฐ๊ฒฐ๋๋ ์ํฉ์ด ์๊น๋๋ค. ์ด๋ด ๊ฒฝ์ฐ ์ฝ๋์ ์ฌ์ฌ์ฉ๊ณผ ์์ ์ด ์๋นํ ์ด๋ ค์์ง๊ฒ ๋ฉ๋๋ค.
๋ง๋ฌด๋ฆฌ & Reference
๋ค์ ํฌ์คํ ์์ Delgate , DataSource, KVO, noticification ๋ฐฉ์์ ๊ณต๋ถํ๋ฉฐ ๋ ์์ธํ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
'๐ง๐ปโ๐ป iOS ๊ฐ๋ฐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS & Swift 5.3+] @main : type๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ ์ง์ ์ (0) | 2021.04.01 |
---|---|
[DEV] Framework, Library , API :: ๊ฐ๋ ์ ๋ฆฌ (0) | 2021.01.12 |