๊พธ์ค€ํ•จ์ด ์ง„๋ฆฌ๋‹ค!!

์–ด์ œ๋ณด๋‹ค ๋ฐœ์ „ํ•œ ์˜ค๋Š˜์ด ๋˜๊ณ ํ”ˆ ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ์˜ ๋ธ”๋กœ๊ทธ

Android

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ Clean Architecture์— ๋Œ€ํ•ด์„œ ( 1 ) - Clean Architecture์˜ ๊ฐœ๋…

๋ށ์š” 2023. 2. 20. 23:41

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ‘‹

์˜ค๋Š˜์€ Clean Architecture์— ๋Œ€ํ•ด์„œ 

๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 

ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ํฌ์ŠคํŒ…ํ•˜๊ธฐ์—” ๋‚ด์šฉ์ด ๊ธธ์–ด์งˆ ๊ฒƒ ๊ฐ™์•„

์˜ค๋Š˜์€ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐ„๋žตํ•˜๊ฒŒ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ €, Clean Architecture๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

 

Clean Architecture๋ž€?

ํด๋ฆฐ ์ฝ”๋“œ(Clean Code)๋ฅผ ์ €์ˆ ํ•œ ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด(Robert C. Martin)์ด ์ œ์•ˆํ•œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋กœ,

๊ธฐ์กด์˜ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ฐ€์ง€๋˜ ์˜์กด์„ฑ์—์„œ ๋ฒ—์–ด๋‚˜๋„๋ก ํ•˜๋Š” ์„ค๊ณ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Clean Architecture์˜ ๊ตฌ์กฐ๋„

 

๊ทธ๋ ‡๋‹ค๋ฉด Clean Architecture๋Š” ์™œ ์“ฐ๋Š”๋ฐ?

Clean Architecture๋ฅผ ํ†ตํ•œ ์„ค๊ณ„๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ํ™•์žฅ์„ฑ์ด ์ข‹์•„์ง€๊ณ  ์‰ฝ๊ฒŒ ํŒจํ‚ค์ง€ ๋ฐ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ธฐ์—

์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ๋„ ๋งŽ์€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿคฉ


Clean Architecture๋ฅผ Android์—์„œ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€?

Android Clean Architecture์˜ ๊ตฌ์กฐ

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์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Ž

๋ฐ”๋กœ ๋‹ค์Œ ํฌ์ŠคํŒ…์œผ๋กœ๋Š” ํ”„๋กœ์ ํŠธ์— ์‹ค์ œ๋กœ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋งŒ๋‚˜์š” ๐Ÿ™‡๐Ÿป‍โ™‚๏ธ

 

์˜ค๋Š˜๋„ ์ฆ์ฝ” ํ•˜์„ธ์š” :)