일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 개발
- Operating System
- db
- MVVM
- 앱개발
- 리액트네이티브
- OS
- 코틀린
- 운영체제
- 디자인 패턴
- Kotlin
- 안드로이드 디자인 패턴
- 프로세스
- 안드로이드 개발
- 리액트
- Android
- cs
- 스레드
- 앱
- 액티비티
- 안드로이드
- 메모리
- reactnative
- CS지식
- 앱 개발
- 데이터베이스
- React
- Database
- 디자인패턴
- github
- Today
- Total
Tech Log
[Design Pattern] Repository Pattern 본문
프로젝트를 하면서 Repository Pattern을 사용해보았고, 데이터 레이어를 분리하였을 때 다른 이점이 더 있을까 궁금하여 조사해보았다.
해당 글은 안드로이드 플랫폼을 기준으로 기술하였습니다.
1. Repository Pattern이란?
데이터 레이어를 분리하는 디자인 패턴이다.
데이터 레이어에는 네트워킹 코드, Room 데이터베이스와 같이 데이터와 관련된 코드들이 들어간다.
UI 부분과는 분리되어 데이터와 비즈니스 로직이 들어간다.
안드로이드는 위 그림과 같이 Repository 패턴을 적용하고 있다.
Remote Data Source와 Local Data Source를 추상화하여 중앙 집중 처리 방식을 구현하였다.
이 덕분에 데이터를 사용하는 곳(ViewModel)에서 비즈니스 로직(Repository)에만 집중할 수 있도록 한다.
정보를 은닉하여 코드 변경이 쉬워지도록 한다.
* 비즈니스 로직 : 프로그램의 핵심 로직으로, 어떻게 데이터가 생성되고 수정되고 저장되는 것인지를 정의한 것이다.
2. 사용 효과
- 데이터를 호출하는 코드(ViewModel)에서 오직 비즈니스 로직에만 집중할 수 있도록 한다.
ViewModel에서는 Repository를 참조하여 데이터를 활용하기만 하면 된다.
데이터를 어디서 얻어야 하는지,
어떻게 얻어야 하는지,
데이터를 가공해야 하는지
와 같은 것들을 ViewModel에서 생각하지 않아도 된다.
그냥 Repository의 데이터를 이용하기만 하면 된다.
따라서 코드를 쉽게 유지 보수할 수 있게 된다.
다만 ViewModel에서는 다음과 같은 것들을 생각해야 한다.
데이터를 얻는데 오래 걸릴 수도 있고 아닐 수도 있다.
데이터 검색에 실패할 수 있다.
이와 같은 것들은 ViewModel에서 고려해야 한다.
- 테스트에 용이해진다.
객체 간 모듈화가 진행되어 테스트에 유리한 환경이 만들어진다.
- 비즈니스 로직을 변경하기 쉬워진다.
데이터 코드가 Repository에 있기 때문에 ViewModel을 변경하지 않아도 된다.
예를 들어 SQLite와 같은 로컬 데이터를 사용하고 있다가, RDBMS로 마이그레이션하는 경우 쉽게 변경할 수 있다.
3. 단점
- 모듈화가 더 진행되기 때문에 관리해야 할 코드가 늘어난다. 복잡해진다.
참조
'Design Pattern' 카테고리의 다른 글
[Design Pattern] Observer Pattern (0) | 2023.03.31 |
---|---|
[Design Pattern] 의존성 주입(Dependency Injection) (0) | 2023.03.29 |
[Architecture Pattern] MVP 패턴 (0) | 2022.09.04 |
[Architecture Pattern] MVVM 패턴 (0) | 2022.08.30 |
[Architecture Pattern] MVC 패턴 (2) | 2022.08.30 |