๐ iOS/Architecture (4) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [iOS/Architecture] UseCase ํ์ฉ๊ธฐ ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)์ต๊ทผ์ ์งํํ ๊ฐ์ธ ํ๋ก์ ํธ์ ์ํคํ ์ฒ๋ฅผ MVVM-Clean Architecture ๋ก ์ค๊ณํ๊ณ , ๊ฐ ๋ ์ด์ด์ ์ญํ ์ ๋ช ํํ ๊ตฌ๋ถํด ์ ์ฒด ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ์ด์ ์ ๋ง์ถ์ด ๊ฐ๋ฐ์ ํ์๋๋ฐ์,์ด ๊ณผ์ ์์ ํนํ UseCase์ ์ญํ ์ ๋ํด ๋ง์ด ๊ณ ๋ฏผ์ ํ ๊ฒ ๊ฐ์์!๊ทธ๋์ ์ ๊ฐ ์ ์ ๋ฐฉ์๋๋ก UseCase๋ฅผ ๊ตฌ์ฑํ ๋ด์ฉ์ ํ ๋ฒ ๊ณต์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.UseCase๋?UseCase ๋ ์ด์ด์ ์ญํ ์ ํ ์ค๋ก ์ ์ํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์ ์ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.UseCase๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์์นํ๋ ๊ณณ์ผ๋ก, ์ํฐํฐ๋ก ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ์กฐ์ ํฉ๋๋ค. ์ด ์ ์๋ฅผ ์ข ํ์ด์ ์๊ฐํด๋ณผ๊ฒ์!ํ๋ฉด์ ๋ณด์ฌ์ค ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํํ๋ก ์ป์ผ๋ ค๋ฉด?1. ๋คํธ์ํฌ ํต์ ์ ํตํด DB์ ์๋ .. [Architecture] Clean Architecture ์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :) ์ ์ฐํ ์ค๊ณ์ ๊ด์ฌ์ด ๋ง์์ง๋ฉด์ ํด๋ฆฐ ์ํคํ ์ฒ์ ๋ํด ์ซ์ซ๋ฐ๋ฆฌ๋ก ๊ณต๋ถ๋ ํ๊ณ ์์์ง๋ง, ๋จธ๋ฆฟ์์ ํ์คํ๊ฒ ๊ฐ๋ ์ด ์กํ์์ง ์์ ์ํ์๋๋ฐ.. ์ด์ ๋ ํ๋ก์ ํธ์ ์ ์ฉ๊น์ง ํด๋ณด๊ณ ์ถ์ด์ ํด๋ฆฐ ์ํคํ ์ฒ์ ๋ํด ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ์ด๋ฒ ๊ฒ์๊ธ์์๋ Robert C. Martin์ The Clean Architecture ๋ผ๋ ๊ธ์ ๋ฒ์ญํด๋ณด๋ฉด์ ํด๋ฆฐ ์ํคํ ์ฒ ๊ฐ๋ ์ ๋ํ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. Clean Architecture๋? ํด๋ฆฐ ์ํคํ ์ฒ๋ Robert C. Martin(aka ์ํด๋ฐฅ, ๋ฐฅ์์ ์จ)์ ์ํด ๊ณ ์๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด์ ๋๋ค. ๋ฐฅ์์ ์จ๊ฐ ํด๋ฆฐ ์ํคํ ์ฒ๋ฅผ ๋์ฒด ์ ๋ง๋ค๊ฒ ๋์๋.. ํ๋ฉด! ๊ธฐ์กด์ ์ฌ๋ฌ ์ํคํ ์ฒ์์ ์ ์ฌ์ฑ์ ์ฐพ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ธฐ์กด์ ์ํคํ ์ฒ๋ค์ ์ธ.. [Architecture] VIPER ํจํด ์๋ ํ์ธ์, ์ ์ธ์ ๋๋ค! ์ต๊ทผ ์์ํ ์ํคํ ์ฒ ๋ฐ ๋์์ธ ์คํฐ๋์์ ์ฒซ๋ฒ์งธ๋ก ์ฃผ์ ๋ก ๋ค๋ฃจ์๋ VIPER ์ํคํ ์ฒ ํจํด์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค. ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค๐ VIPER Pattern์ด๋? View, Interactor, Presenter, Entity, Router์ ์ฝ์๋ฅผ ๋ฐ์์ VIPER๋ผ๋ ์ด๋ฆ์ด ๋ช ๋ช ๋ ๋จ์ผ์ฑ ์์์น ๊ธฐ๋ฐ์ ์ํคํ ์ณ์ ๋๋ค. ์์ง๋๋ ๋๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์ ํํ๋ก, ์๋ฌด๋๋ ๊ฐ๊ฐ์ ๊ตฌ๋ถ์ด ๋ง์ ๋งํผ ์ญํ ๋จ์์ ๊ตฌ๋ถ์ด ๋ช ํํฉ๋๋ค. (์ด๊ฒ์ด ๋ญ๊ฐ ์ฅ์ ์ด ๋ ์๋ ๋จ์ ์ด ๋ ์๋ ์๋ ๊ฒ ๊ฐ๊ธดํฉ๋๋ค..) ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๊ทธ๋ฆผ์ผ๋ก ํํํด๋ดค๋๋ฐ์, ํ๋์ฉ ์ดํด๋ด ์๋ค! View : ์ด๋ค ํจํด์ด๋ ์ฌ์ฉํ๋ View ์ญํ ์ ๋๋ค. ์ฃผ๋ก UIViewController, UIView๋ค์ด ์ด ์ญํ .. [Architecture] MVC, MVP, MVVM ์ํคํ ์ฒ ํจํด ์๋ ํ์ธ์๐ ์ค๋์ ์ํคํ ์ฒ ํจํด ๋ช๊ฐ์ง์ ๋ํด ์ ๋ฆฌํด๋ณผ๊น ํฉ๋๋ค! ์ํคํ ์ฒ์ ๋ํด ๊ณต๋ถํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ ์ด์ ๋ MVC ํจํด์ผ๋ก ๊ฐ๋ฐํ๋ฉฐ VC๊ฐ ๋ชจ๋ ์ญํ ์ ๋ด๋นํ๋ค๋ณด๋ ์ ์ ๋ฌด๊ฑฐ์์ง๋ ๊ฒ์ ๋๊ผ๊ณ .. ์ด๋ฌํ MVC ํจํด์ ๋จ์ ์ ๋ํ ๋์์ผ๋ก MVVM ํจํด์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์ MVC, MVP, MVVM ์ํคํ ์ฒ ํจํด์ ๋ํด ์ฐจ์ด์ ์ ์์ฃผ๋ก ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ์ํคํ ์ฒ ํจํด์ด๋? ๋จผ์ , ์ํคํ ์ฒ ํจํด์ด๋ ๋ฌด์์ผ๊น์? ์ํคํผ๋์์ ๋ฐ๋ฅด๋ฉด, ์ํคํ ์ฒ ํจํด์ด๋, ์ฃผ์ด์ง ์ํฉ์์์ ์ํํธ์จ์ด ์ํคํ ์ณ์ ๊ณตํต์ ์ธ ๋ฐ์ ๋ฌธ์ ์ ๋ํ ์ผ๋ฐ์ ์ธ, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ ์๋ฏธํ๋ค. ์ํคํ ์ฒ ํจํด์ ์ํํธ์จ์ด ๋์์ธ ํจํด๊ณผ ์ ์ฌํ์ง๋ง ๋ ํฐ ๋ฒ์ฃผ์ ์ํ๋ค. ๊ฐ๋จํ ๋งํ๋ฉด, ์ํคํ ์ฒ ํจ.. ์ด์ 1 ๋ค์