์ฐธ๊ณ
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์ ๋ํด ์๋ ๊ฒ ๋ฐ๋ก ๋ผ์ด ๋๊ณ ๋ณผ ์ ์์ด์ ์ข์๋ค.