์๋ ํ์ธ์ ๐
์ค๋์ Clean Architecture์ ๋ํด์
๊ณต๋ถํ ๋ด์ฉ์ ํฌ์คํ ํด๋ณด๋ ค ํฉ๋๋ค.
ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๊น์ง ํฌ์คํ ํ๊ธฐ์ ๋ด์ฉ์ด ๊ธธ์ด์ง ๊ฒ ๊ฐ์
์ค๋์ ๊ฐ๋ ์ ๋ํด์๋ง ๊ฐ๋ตํ๊ฒ ํฌ์คํ ํด๋ณด๊ฒ ์ต๋๋ค.

๋จผ์ , Clean Architecture๋ ๋ฌด์์ผ๊น์?
Clean Architecture๋?
ํด๋ฆฐ ์ฝ๋(Clean Code)๋ฅผ ์ ์ ํ ๋ก๋ฒํธ ๋งํด(Robert C. Martin)์ด ์ ์ํ ์์คํ ์ํคํ ์ฒ๋ก,
๊ธฐ์กด์ ๊ณ์ธตํ ์ํคํ ์ฒ๊ฐ ๊ฐ์ง๋ ์์กด์ฑ์์ ๋ฒ์ด๋๋๋ก ํ๋ ์ค๊ณ๋ฅผ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Clean Architecture๋ ์ ์ฐ๋๋ฐ?
Clean Architecture๋ฅผ ํตํ ์ค๊ณ๋ฅผ ํ๊ฒ ๋๋ฉด ๊ด์ฌ์ฌ๊ฐ ๋ถ๋ฆฌ๋์ด ํ์ฅ์ฑ์ด ์ข์์ง๊ณ ์ฝ๊ฒ ํจํค์ง ๋ฐ ๊ตฌ์กฐ๋ฅผ ํ์ ํ ์ ์๊ธฐ์
์ ์ง๋ณด์ ์ธก๋ฉด์์๋ ๋ง์ ์ด์ ์ด ์์ต๋๋ค. ๐คฉ
Clean Architecture๋ฅผ Android์์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์?
Presantaion
Data์ Domain์ ์์กด์ฑ์ ๊ฐ์ง๋ฉฐ Data๋ฅผ ํ๋ฉด์ ํ์ํ๊ณ ์ฌ์ฉ์์์ ์ง์ ์ ์ธ ์ํธ์์ฉ์ ๋ค๋ฃน๋๋ค.( UI, Activity , Fragment , ViewModel ๋ฑ)
Data
Domain์ ์์กด์ฑ์ ๊ฐ์ง๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ํด๋น layer์์๋ Domain์ ์กด์ฌํ๋ Repositorty๋ฅผ ๊ตฌํํ๋ ๊ตฌํ์ฒด์ Data์์ ์ ๋ฌ๋ฐ์ model์ Domain์ ์๋ model๋ก mappingํด์ฃผ๋ Mapper class ๋ง์ง๋ง์ผ๋ก DataSource๋ ํจ๊ป ์กด์ฌํฉ๋๋ค. (DB , Api ๋ฑ๋ ํจ๊ป ์กด์ฌ)
Domain
๋น์ฆ๋์ค ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ๊ฐ์ฅ ํต์ฌ ๊ณ์ธต์ผ๋ก ์๋ฌด๋ฐ ์์กด์ฑ์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉฐ ์์ ์๋ฐ/์ฝํ๋ฆฐ ์ฝ๋๋ง์ด ์กด์ฌํด์ผ ํฉ๋๋ค. ํด๋น ๋ถ๋ถ์๋ Repository , Entity , UseCase๊ฐ ์กด์ฌํฉ๋๋ค.
์ด์์ผ๋ก Clean Architecture์ ๊ฐ๋ ๊ณผ Android์์๋ ์ด๋ป๊ฒ ์ ์ฉํ๋์ง์ ๋ํด์ ์์๋ณด์์ต๋๋ค. ๐
๋ฐ๋ก ๋ค์ ํฌ์คํ ์ผ๋ก๋ ํ๋ก์ ํธ์ ์ค์ ๋ก ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ํด๋ณด๋ ค ํฉ๋๋ค.
๋ค์ ํฌ์คํ ์์ ๋ง๋์ ๐๐ปโ๏ธ
์ค๋๋ ์ฆ์ฝ ํ์ธ์ :)