๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[๋””์ž์ธ ํŒจํ„ด] Repository Pattern

์ฐธ๊ณ 

https://pinarturgut09.medium.com/what-is-the-repository-pattern-in-android-a-comprehensive-guide-df10ec874ddc

https://pinartechtips.com/repository-pattern-in-android/

 

๋ชฉ์ 

Repository Pattern์ด ๋ฌด์—‡์ธ์ง€ / ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ /  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•ˆ๋‹ค.

 

Repository Pattern์€ ๋ฌด์—‡์ธ๊ฐ€

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฒด๊ณ„์ ์ด๊ณ  ์กฐ์ง์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด.

๋ฐ์ดํ„ฐ ์†Œ์Šค(๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค, ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค ๋“ฑ)์™€ ์•ฑ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๋“ค ์‚ฌ์ด์˜ ์ค‘์žฌ์ž๋กœ Repository๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ถ”์ƒํ™”ํ•œ๋‹ค.

 

Repository Pattern์€ ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€

Repository Pattern์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ฝ”๋“œ๊ฐ€ ๋ถ„์‚ฐ ๋ฐ ์ค‘๋ณต๋˜๋ฉฐ, ์ปคํ”Œ๋ง์ด ์ƒ๊ธด๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋™์ž‘์ด ์ผ๊ด€์„ฑ์ด ์—†๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๊ณ , ์œ ์ง€ ๋ณด์ˆ˜ ํ•˜๊ธฐ ๋ณต์žกํ•ด์ง„๋‹ค.

๋ฐ์ดํ„ฐ ์†Œ์Šค, ๋กœ์ง ๋ณ€๊ฒฝ์ด ์–ด๋ ค์›Œ์ง„๋‹ค. 

๋””๋ฒ„๊น…์ด ๋ณต์žกํ•ด์ง„๋‹ค.

๊ฐœ๋ฐœ์ž ๊ฐ„ ํ˜‘์—…์ด ์–ด๋ ค์›Œ์ง€๊ณ , ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค. ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ํ•™์Šตํ•˜๋Š”๋ฐ ํ•™์Šต ๊ณก์„ ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

 

Repository Pattern์„ ์‚ฌ์šฉํ•˜๋ฉด

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ฝ”๋“œ๊ฐ€ ์ฒด๊ณ„์ ์œผ๋กœ ์กฐ์ง๋˜์–ด์„œ ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ธ๋‹ค. ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์ด๋ฃฐ ์ˆ˜์žˆ๋‹ค.

์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฝ”๋“œ ์œ ์—ฐ์„ฑ์ด ๋†’์•„์ ธ ์ฝ”๋“œ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฝ๋‹ค. 

ํ˜‘์—… ๋ฐ ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. 

 

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ Repository Pattern์€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€

Repository Pattern์˜ ์ค‘์š” ๊ตฌ์„ฑ์š”์†Œ๋“ค

1. Data Models

์‚ฌ์šฉํ•˜๋Š” Data entity๋“ค์˜ ์ •์˜.

2. Data Sources

Room Database, ๋„คํฌ์›Œํฌ ์š”์ฒญ์„ ์œ„ํ•œ Retrofit๊ณผ ๊ฐ™์€ ํŠน์ • ๋ฐ์ดํ„ฐ ์†Œ์Šค๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํด๋ž˜์Šค๋“ค

3. Repository

Data Sources์™€ ์•ฑ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๋“ค ์‚ฌ์ด์—์„œ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” ํด๋ž˜์Šค. ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

 

Repository Pattern์—์„œ ์ด ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ์–ด๋–ป๊ฒŒ ์ด์šฉํ•˜๋Š”๊ฐ€

1. Data Models ์ •์˜ํ•˜๊ธฐ

2. Data Sources ์ƒ์„ฑํ•˜๊ธฐ

3. Repository ์ƒ์„ฑํ•˜๊ธฐ

CRUD ๋“ฑ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฉ”์†Œ์Šค ์ƒ์„ฑํ•˜๊ธฐ

4. Data access logic ๊ตฌํ˜„ํ•˜๊ธฐ

Repository ์•ˆ์—์„œ ์ด๋ฏธ ์ •์˜๋œ data sources๋ฅผ ์ด์šฉํ•ด data access logic์„ ๊ตฌํ˜„ํ•œ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜, ์บ์‹ฑ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

5. Repository ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ

ViewModel์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Repository์—์„œ ๋ฉ”์†Œ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ๋น„๋™๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด suspend function์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์—์„œ ๋‹น์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด ์˜ค๋˜ Repository Pattern์— ๋Œ€ํ•ด ์š”๋ ‡๊ฒŒ ๋”ฐ๋กœ ๋–ผ์–ด ๋†“๊ณ  ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค.