Design Patterns #Section01 MVC(02) - Basic MVC vs Cocoa MVC
๐ MVC(01) - Model, View, Controller
๐ MVC(02) - Basic MVC vs Cocoa MVC
๐๏ธ Introduce
์ง๋ ๊ธ์์ MVC ๋์์ธ ํจํด๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด๋ค Model, View, Controller ๊ฐ๊ฐ์ ํน์ง์ ๋ํด ์์๋ดค๋ค.
์ด๋ฒ ํํธ์์๋ Basic MVC ํจํด๊ณผ Cocoa MVC ๋์ ๋ฐฉ์์ ํ์ธํ๊ณ ์ฐจ์ด์ ์ ๋ํด ์์๋ณธ๋ค.
๐ฑ Basic MVC
๋น์ฐํ ๋ง์ด๊ฒ ์ง๋ง MVC ํจํด์ iOS ๊ฐ๋ฐ์๋ง ๊ตญํ๋ ๊ฒ์ด ์๋๋ค.
๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ MVC ํจํด์ Composit, Strategy, Observer ํจํด์ผ๋ก ๊ตฌ์ฑ๋ Compound ๋์์ธ ํจํด์ด๋ค.
Composit pattern(View)
- App์ View ๊ฐ์ฒด๋ ์ค์ ๋ก ์กฐ์งํ๋ ๋ฐฉ์์ผ๋ก ํจ๊ป ๋์ํ๋ ์ค์ฒฉ๋ View์ ๋ณตํฉ์ฒด์ด๋ค.
- Interface ๊ตฌ์ฑ ์์๋ค์ Window๋ถํฐ Compound View๋ Individual View๊น์ง ๋ค์ํ๋ค.
Strategy Pattern(Controller)
- Controller ๊ฐ์ฒด๋ ํ๋ ์ด์์ View ๊ฐ์ฒด๋ฅผ ์ํ ๋ก์ง์ ๊ตฌํํด์ผ ํ๋ค.
- View ๊ฐ์ฒด๋ ์๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ๊ตญํ๋๋ฉฐ, Inteface ๋์ ๊ธฐ๋ฅ์ Controller์๊ฒ ์์ํ๋ค.
Observer Pattern(Model)
- Model ๊ฐ์ฒด๋ App์์ Model์ Data์ ๊ด์ฌ์๋ ๊ฐ์ฒด(์ผ๋ฐ์ ์ผ๋ก View๊ฐ์ฒด)์๊ฒ ์ํ ๋ณํ๋ฅผ ์ง์์ ์ผ๋ก ์๋ ค์ค๋ค.
Basic MVC Diagram
์ ๊ทธ๋ฆผ์ Composit, Strategy, Observer ํจํด์ด ํจ๊ป ์๋ํ๋ Basic MVC ํจํด์ ๋์ํํ ๊ฒ์ธ๋ค.
- Composit Pattern์ ์ ์ฉํ View ๊ฐ์ฒด์์ User Action์ ํตํด Event๊ฐ ๋ฐฉ์ถ๋๋ค.
- Controller ๊ฐ์ฒด๋ ํด๋น Event๋ฅผ ์์ ํ์ฌ ์ค๊ณ๋ ๋ก์ง์ ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์ด๋ ํด๋น Controller๋ Model์๊ฒ Data ์ํ ๋ณ๊ฒฝ์ ์์ฒญํ ์๋ ์๊ณ View ๊ฐ์ฒด์ Interface ๋์์ด๋ ๋ชจ์์ ๋ณ๊ฒฝํ๋๋ก ์์ฒญํ ์ ์๋ค. - Model ๊ฐ์ฒด๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ Observer๊ฐ ๋ฑ๋ก๋ ๋ชจ๋ ๊ฐ์ฒด์๊ฒ ์๋ฆฐ๋ค. ๋ง์ฝ Oberver๊ฐ View ๊ฐ์ฒด๋ผ๋ฉด ๋ด์ญ์ ๋ฐ๋ผ Interface ๋ณ๊ฒฝ์ ํ ์๋ ์๋ค.
๐ฑ Cocoa MVC
์ฌ์ค Basic MVC ๊ตฌ์กฐ์ ๊ธฐ๋ฐํ App ์ค๊ณ๋ ๊ฐ๋ฅํ๋ค.
๋ฐ์ธ๋ฉ(Binding) ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด Model์์ ๋ฐฉ์ถ๋ Event๋ฅผ View์ Observer์ ์ ๋ฌํด Model์ ์ํ ๋ณ๊ฒฝ์ ์์ ํ๋ MVC๊ธฐ๋ฐ App์ ๋ง๋ค ์ ์๋ค.
ํ์ง๋ง ์ ๋ฐฉ๋ฒ์ผ๋ก MVC ํจํด์ ์ค๊ณํ๋ฉด View์ Model ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ์ฑ์ ํ๋ณดํ ์ ์๋ ๋ฌธ์ ์ ์ง๋ฉดํ๊ฒ ๋๋ค.
- View๋ App์ ์ ์๋ ๋ด์ฉ(๋น์ฆ๋์ค ๋ก์ง)์ OS๊ฐ ๋ณด๊ณ ํํํ ๊ฐ์ฒด์ด๋ค.
๋ฐ๋ผ์ OS์ ์ฅ์์ View ๊ฐ์ฒด๋ Interface์ ๊ธฐ๋ฅ์ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ฉฐ, ๋์ ์์ค์ ์ฌ์ฌ์ฉ์ฑ์ ๊ฐ์ง ๊ฒ์ ์๊ตฌํ๋ค. - Model ๊ฐ์ฒด๋ ์ ์์ ์ํด ํน์ ์์ญ์ ์ฐ๊ด๋ Data๋ฅผ ์บก์ํํ๊ณ ํด๋น Data๋ค์ ๋ํ ๋์์ ์ํํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ค๊ณ์ธก๋ฉด์์ ์ฌ์ฌ์ฉ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด View์ Model ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํด์ผํ๋ค.
Cocoa MVC
Cocoa MVC Diagram
๋๋ถ๋ถ์ Cocoa App์์ Model์์ ๋ฐฉ์ถ๋ Event๋ค์ Controller ๊ฐ์ฒด๋ฅผ ํตํด View๋ก ์ ๋ฌ๋๋ค.
๋ํ Compound ํจํด์ ๋ํด Controller๋ Mediator, View๋ Command ํจํด์ด ์ถ๊ฐ๋ก ํฌํจ๋๋ค.