๐ 1 . Model, View, Controller
Model
๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง(ํ๋ฉด๊ณผ ๊ด๋ จ์ด ์๋ ๋ก์ง๊ณผ ๋ฐ์ดํฐ ๊ด๋ จ)
Model์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด Controller์ ์๋ฆฌ๊ธฐ ์ํด KVO, Delegate ํจํด, Notification Center ๋ฑ์ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค๋ฉด, ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด๊ฐ ์ฌ๊ธฐ์ ํด๋นํ๋ค.
view
๋ทฐ์ปจํธ๋กค๋ฌ์ ๋ช ๋ น์ ๋ฐ์ UI ์์๋ค์ ์ฌ์ฉ์ ํ๋ฉด ํ์ํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ด๋น.
view๋ Model์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ด๋ค.
Controller๋ View์์ ๋ฐ์ํ ์ ์๋ action์ ๋ํ target์ ๋ง๋ค์ด๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด View๋ ํด๋น ์ด๋ฒคํธ๋ฅผ Controller์ ์ ๋ฌํ๋ค.
View์์ ์ ์ ์ action์ด ๋ฐ์ํ ๊ฒฝ์ฐ Controller์ ์๋ target์ด ์ด๋ฅผ ๋ฐ์๋ค์ด๊ณ ์์ ์ ์ํํ๋ค.
๋ํ View๋ delegate ํจํด์ delegate์ datasource๋ฅผ ์ด์ฉํ์ฌ Controller์๊ฒ ์ด๋ค ์์ ์ ์ํํด์ผํ๋์ง ์๋ฆฌ๊ธฐ๋ ํ๋ค.
๋ํ์ ์ธ ์๋ก UITableView์ UITableViewDelegate์ UITableViewDatasource๋ฅผ ๋ค ์ ์๋ค.
controller
Controller๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ Model์ ์ ๋ฐ์ดํธํ๊ณ , Model์ ๋ณ๊ฒฝ ์ฌํญ์ View์ ๋ฐ์ํ๋ค.
Controller๋ Model๊ณผ View์ ์ง์ ์ง์๋ฅผ ํ ์ ์์ง๋ง Model๊ณผ View๋ Controller์ ์ง์ ์ ์ผ๋ก ์๋ฆด ์ ์๋ค.
๐ 2. MVC ํจํด์ ๋จ์
๊ฐํ ๊ฒฐํฉ๋ (Tight Coupling):
Controller๊ฐ View์ Life Cycle๊น์ง ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ View์ Controller๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ด๋ ต๋ค.
์ด๋ ๋ ๋ฆฝ์ ์ธ ํ ์คํธ์ ์ฌ์ฌ์ฉ์ด ์ด๋ ต๋ค.
UI ๋ณ๊ฒฝ ์ Controller ์์ ์ ํด์ผ ํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง ๋ณ๊ฒฝ ์ View ์์ ์ ํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
์ ์ง๋ณด์์ฑ ๊ฐ์ (Reduced Maintainability):
์ฝ๋๊ฐ ์ปค์ง๋ฉด Controller์ ๋ง์ ๊ธฐ๋ฅ์ด ์ง์ค๋๋ฉด์ ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๋ค. ์ด๋ ์ ์ง๋ณด์์ ๋๋ฒ๊น ์ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
์ฌ์ฌ์ฉ์ฑ ๋ฌธ์ (Reusability Issues):
View์ Controller์ ๊ฐํ ๊ฒฐํฉ์ผ๋ก ์ธํด View๋ฅผ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ๋ค๋ฅธ ๋ถ๋ถ์์ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค.
๋ค์ํ View๊ฐ ๋์ผํ Controller๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ํ๋ค๋ค.
Massive View Controller (MVC Anti-pattern):
๋ง์ ์ฝ๋๊ฐ Controller์ ์ง์ค๋์ด Controller๊ฐ ๋น๋ํด์ง๊ณ ๋ณต์กํด์ง๋ค. ์ด๋ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ ์ง๋ณด์๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด View์ Controller ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ๊ฐ ์ปดํฌ๋ํธ์ ์ฑ ์์ ๋ช ํํ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํ๋ค.
Delegate ํจํด, Notification Center, KVO ๋ฑ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ ์ ์๋ค.
๐ Reference
https://velog.io/@zooneon/iOS-MVC-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
'๐ iOS > Patterns & Arch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Architecture ] MVVM ํจํด (0) | 2024.08.02 |
---|---|
[Design Patterns] ์ต์ ๋ฒ ํจํด (Observer Pattern) (0) | 2024.08.01 |
[Design Patterns] ๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด(Delegate Pattern) (0) | 2024.07.08 |
[Design Patterns] ์ฑ๊ธํค(Singleton) ํจํด (0) | 2024.06.03 |