Apple is Apple
article thumbnail

일일 회고

 

개인과제 주석도 달고.. 수정도 하고 마무리를 하고 제출을 했다!

 

심화 과제답게 시간도 꽤 많이 든 것 같다. 내일이 지나고 다음 주 부터는 심화프로젝트의 시작이다.

 

내일은 살짝 가볍게 공부하는 느낌으로 가고, 다음 주를 준비해봐야겠다!


오늘의 키워드

  • 알고리즘
  • Repository Pattern

알고리즘

 

[programmers] [Kotlin] 로또의 최고 순위와 최저 순위

문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 6개 번호가 모두 일치 2 5개 번호가 일치

aaapple.tistory.com

Repository Pattern (feat. Facade)

등장 배경

 

비즈니스 로직은 프로그램의 핵심이 되는 요소이며, 비즈니스 로직을 잘 짜야 원하는 결과를 올바르게 도출할 수 있다. 이때 비즈니스 로직은 보통 데이터베이스나 웹서비스 등의 데이터 저장소(Room or Retrofit API)에 접근하게 되는데 이 과정에서 여러 문제가 발생할 수 있다. 주로 중복되는 코드, 오류를 발생할 가능성이 있는 코드, 오타, 비즈니스 로직 테스트의 어려움 등이 있다.

 

이에 따라 몇 가지 요구사항이 발생하는데,

(1) 비즈니스 로직과 Data Layer(+ UI Layer)를 분리해야 하고

(2) 중앙 집중 처리 방식을 통해 일관된 데이터와 로직을 제공해야 한다는 것이다.

 

이를 해결하기 위해 Repository Pattern이 등장하였다

.

Repository Pattern은 데이터 레이어를 앱의 나머지 부분에서 분리하는 디자인 패턴이다.

UI가 사용자에게 정보를 제공하는 동안 Data Layer에는 네트워킹 코드, Room 데이터베이스, 오류 처리 등이 포함되고, ViewModel에서는 로직을 처리하기만 하면 된다. (Domain Layer가 있다면 Domain에서 비즈니스 로직을 처리할 수 있다.)

 

장점

  • 데이터 로직과 비즈니스 로직을 분리하여, ViewModel -> Model 간의 단방향 의존성 구조를 구현한다.
  • UI Layer(Domain Layer - optional)에서는 일관된 인터페이스를 통해 데이터를 요청할 수 있다. (Repository를 추상화했으로 ViewModel은 일관된 인터페이스로 데이터를 요청 가능)
  • 데이터 저장소의 데이터를 캡슐화할 수 있다. 객체지향적인 프로그래밍에 더 적합하다.
  • 객체 간의 결합도가 감소한다. (코드를 모듈식으로 만드는데 도움을 준다)
  • 위의 효과로 단위 테스트를 통한 검증이 원활해진다.

 

 

 

ref.

 

저장소 패턴  |  Android Developers

저장소 패턴을 사용하여 기존 앱에서 캐싱을 구현합니다.

developer.android.com

 

 

[Design Pattern] Repository Pattern 이란 - HERSTORY

개요 발생 배경 비즈니스 로직은 프로그램의 핵심이 되는 요소이며, 비즈니스 로직을 잘 짜야 원하는 결과를 올바르게 도출할 수 있다. 이때 비즈니스 로직은 보통 데이터베이스나 웹서비스 등

4z7l.github.io

 

profile

Apple is Apple

@mjjjjjj