๋์ถฉ [๋ชจ๋ธ(๊ฒ์ ๋ฐ์ดํฐ) - ๋ทฐ(UI) - ์ปจํธ๋กค๋ฌ(์ค๊ฐ๋ค๋ฆฌ)]ย ์ด๋ฐ ์ ์ฌํ ๊ตฌ์กฐ๋ก ์งํํ์๋
์ ์ ์ ๋ ฅ์ ๋ทฐ๋ก ๋ฐ์์ย ์ปจํธ๋กค๋ฌ๋ก ๋ณด๋ด๊ณ ์ปจํธ๋กค๋ฌ์์ ๋ชจ๋ธ์ ์กฐ์ํ๊ณ ๋ค์ ๊ทธ๊ฑธ ๊ธฐ๋ฐ์ผ๋ก ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ค๊ณ ํจ
์์ ์์์ย ํต์ฌ ๋ก์ง์ ์ด๋์ ๊ตฌํํ๋๊ฒ ๋ง์๊น?
[1. ์ ์ ์ ์ ๋ ฅ์ ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌํ๊ธฐ]
ย ์ด๋ถ๋ถ์ ๊ตฌํ๋ฐฉ๋ฒ์ด ๋ช ํํ๋ค๊ณ ์๊ฐํจ
[2. ์ปจํธ๋กค๋ฌ์์ ๋ชจ๋ธ์ ์กฐ์ํ๊ธฐ]
ย a. ์ปจํธ๋กค๋ฌ์ ๋ชจ๋ธ์ ์กฐ์ํ๋ ๋ ผ๋ฆฌ๋ฅผ ๋ฃ๊ณ ์กฐ์ํ ๋ชจ๋ธ์ ์ธ์๋ก ๋ถ๋ฌ์์ ์ปจํธ๋กค๋ฌ์์ ์กฐ์ํจ
ย b. ๋ชจ๋ธ์ด ์ค์ค๋ก๋ฅผย ๋ณํ์ํฌ ๋ ผ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ , ์ปจํธ๋กค๋ฌ๋ ์ธ์ ์ ๋ฌํ๊ณ ํธ์ถ๋ง ํจ
[3. ๋ฐ๋ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ]
ย a. ๋ทฐ๊ฐ ๋ชจ๋ธ์ ์ฃผ์ํ๊ณ ์๋ค๊ฐ ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ ์ค์ค๋ก ์ ๋ฐ์ดํธํจ
ย b. ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ๋ ๋ชจ๋ธ์ ๋ทฐ์๊ฒ ๋๊ธฐ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ์์ฒญํจ
๋ณธ์ธ ์นํ๋ก ํธย ์ ๋ชจ๋ฆ ๊ทธ๋ฅ ์ค๋ช ํ๊ธฐ ์ฝ๊ฒ ์ฉ์ด๋ง ๊ฐ์ ธ์จ๊ฑฐ์. ์ด์ชฝ ๊ฒฝํ์ด ์์ผ๋ฉด ๋ต์ด ๋ช ํํ๊ฒ ๋ณด์ผ๊ฑฐ๊ฐ๊ธฐ๋ ํ๋ฐ ๋ ํด๋ณธ์ ์ด ์์ด
2, 3๋ฒ ๊ตฌํ์ ์ด๋ป๊ฒ ํ๋๊ฒ ์ข์๊น?ย
ํนํ 2๋ฒ์ด ์ง์ง ์ ๋งคํ๊ฑฐ๊ฐ์. ์ฝ๋๋ฅผ ๋ช๋ฒ์ด๋ ๊ฐ์์๋์ง ์๋ ๋ฆฌํฉํ ๋ง ๊ธฐ๋ฅ์ด ์๋์์ ๋คํ์ด์ง
https://github.com/neuecc/UniRx
UniRx๋ฅผ ์ข ์ดํดํด์ผ ๊ด์ฐฎ์ ๋ด์ฉ์ด๊ธดํ๋ฐ, ์ค๊ฐ์ Model-View-(Reactive)Presenter Pattern๋ฅผ ๋ณด๋ฉด ๊ทธ๋๋ง ์ข ๊ด์ฐฎ์ ์์๊ฐ ๋์ด. UniRx๋ฅผ ์ฐ๋ผ๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ ๊ฐ์ก์๋งํ ์์๋ผ์ ์ฌ๋ ค๋ด
MVC ๊ธฐ๋ณธ ํจํด์ ๋ณธ๋ 2-a / 3-a ๊ตฌ์กฐ๊ฐ ๋ง๋๋ฐ 2-b๋ ์ฌ๋ฌ ๋ ๋ฆฝ๋ ์ปจํธ๋กค๋ฌ์์ ๋์ผํ ๋ชจ๋ธ์ ์ฌ์ฉํ๋๋ฐ ํด๋น ๋ชจ๋ธ ์์ฒด๋ด์์ ์ฐ์ฐํ๋๊ฒ ํธํ๊ฑฐ ๊ฐ๋ค? ์ถ์ผ๋ฉด ์ฌ์ฉํ๋ฉด ๋จ ์๋๋ฉด ModelUtils ๋ก ๋ฐ๋ก ์ ํธ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ๋ชจ๋ธ์ ์ฐ์ฐ์์ผ์ฃผ๋๋ก ํ๋๊ฐ ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ 3-a๊ฐ์ ๊ฒฝ์ฐ๋ ์ค์ ๋ก 3-b์ ๋นํด์ ํผํฌ๋จผ์ค๊ฐ ๋จ์ด์ง๊ณ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ์ฐ์ถ์ ๋ณํ ๊ฐ์ ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ฃผ์ง ์์์ผ ํ ๋๋ ์์ ์ค์ค๋ก๊ฐ ์ ์ดํดํ๊ณ ์๋ค๋ฉด ์ ์ ํ ๋ณํํด์ ์ฐ๋ฉด ๋ ๊ฑฐ ๊ฐ์ ๊ฐ์ธ์ ์ผ๋ก ํจํด์ ๊ทธ๋๋ก ์ฌ์ฉํด๋ ์ข์ง๋ง ์ ์ ํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์๊ธฐ ํ๋ก์ ํธ์ ๋ง๊ฒ ์ฌ์ฉํ๋๊ฒ ๋ ์ข์๊ฑฐ๊ฐ์
๊ทธ๋ฆฌ๊ณ ์ง๋ฌธํญ์ผ๋ก ๊ธ์ฐ๋ฉด ์ข์๊ฑฐ ๊ฐ์ ์ ๋๋ถ๋ถ ์ง๋ฌธ ํญ์ด๋ ๊ฐ๋ฐ์ผ์ง ํญ๋ง ๋ณด๋๋ฐ ์ด๊ฑด ๋ค๋ ๋ค๊ฐ ์ฒซํ์ด์ง ์๋จ์ ์์ด์ ๋ณด๊ณ ๋ต๋ณํ๊ฑฐ๋ผ์ ์ ๊ฐ์ ์ฌ๋๋ ์ข ์์ง ์์๊น ์ถ์
์น ๊ฐ๋ฐ๊ณผ ๋ฌ๋ฆฌ ๊ฒ ๊ตฌํ์ ์ปจํธ๋กค๋ฌ, ํธ๋ค๋ฌ, ๋งค๋์ (ํ์ ๋ฒ ์ด์ค) ์ด๋ฆ์ ๋ฐ๋ผ ์ฉ๋๋ง ๋ช ํํ๊ฒ ํด๋๋ ๋ฐ ์ด์์ ๋๊ฑฐ์. ์ด๊ฑฐ ์งํค๋ ๊ฒ๋ ํ๋ค๋ค.
MVC ๊ฐ ํธ์จ์ ์ธ๋ฐ๋ UI ์์คํ ์ค์์๋ ์ผ๋ถ์. ๋ญ ํ๋ ค๋์ง์ ๋ฐ๋ผ ์๊ฐ ์ํด์ ์ ์ฉํด๋ด
๊ธ๊ณ ๋ชจ๋ธ์ด ์ค์ค๋ก๋ฅผ ๋ณํ์ํค๋ ์๋ ๊ทนํ ์ ํ์ ์ผ๋ก ์จ์ผ๋จ. ์ผ๋ถ ํ๋ผํผํฐ setter ์ ๋์๋ ์ฐ๊ณ . ์๋๋ฉด ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐ๋ ์ด์ ๊ฐ ๋ทฐ์ ๋ชจ๋ธ์ ๋ถ๋ฆฌํ๋๊ฑด๋ฐ ๋ชจ๋ธ์ด ์ ๋๋๋ฉด ๊ทธ๊ฑธ ๋ทฐ์ ๋ฐ์ํด์๋ฐ ๊ผฌ์ผ์ผ์ด ๋ง์. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ธํด๋์ค๋ ๋ง์๊ฒฝ์ฐ DB๋ csv,json ์ ๋ถ์ ์. ๊ทธ๋ฅ ๋ฐ์ดํฐ ํํ์ผ๋ฟ. ๊ทธ๊ฒ ๋ค๋ฅธ๊ฑธํ๋ฉด ๋ฉ์ด์ ๋ชจ๋ธ์ด ์๋์ง