inflearn logo
강의

Course

Instructor

Frozen Coder's Easy Introduction to Modern Android Development

Practice2C-Android App Architecture Setup (Repository, ViewModel, Coroutine, Livedata)

BookSearchRepository 관련 질문

270

minco

24 asked

0

BookSearchRepository interface 부분과 BookSearchRepository 구현부를 구현한건 검색 결과를 받아오기위해서인거 같은데

설명이 간략해서 잘 이해사 안갑니다 ㅠㅠ

왜 interface를 생겅하고 구현하는지도... interface 는 한 기능을 여러 class 에서 메소드name 를 공통되게 쓰고싶을때 구현하는게 아닌가요 ㅠㅠ?

왜 1:1 로 사용하는지 궁급합니다.

 

kotlin android architecture jetpack

Answer 3

0

frozencoder

강의에서 제작한 앱은 규모가 작아 리포지토리를 한개만 사용하지만 만약 앱의 규모가 크다면 책을 찾는데 사용하는 BookSearchRepository 외에 FavoriteBookRepository를 사용할 수도 있을 것입니다. 그 경우 BookRepository라는 interface를 만들어서 양쪽의 Impl로 사용하게 되겠죠. 물론 테스트를 위해 TestBookSearchRepository와 TestFavoriteBookRepository를 만들어야 할 필요도 있을 것이구요.

0

minco

답변 감사합니다. 냉동선생님!

리포지토리가 인터페이스에 정한 동작만 수행 할 수 있도록 제한하기 위함 이라고 하셨는데 이 말씀은 Impl(interface 가 구현된 클래스) interface 에서 정의하지 않은 내용을 추가하거나 할 수 없게 하려는 의도 라는 말씀이신가요?

만약 이 말이 맞다면 인터페이스와 임플먼트가 꼭 1:1 이어야 할 필요는 없다 라는 말이 이해가 잘 가지 않습니다 ㅠㅠ

이 부분은 테스트용 에만 해당하는 말씀이신가요?

 

0

frozencoder

인터페이스는 구현할 클래스의 내용을 미리 정해두도록 하는 기능을 갖고 있는데요, 리포지토리를 인터페이스를 통해 작성하도록 한 이유는 리포지토리가 인터페이스에 정한 동작만 수행 할 수 있도록 제한하기 위함입니다.

그리고 인터페이스와 임플먼트가 꼭 1:1 이어야 할 필요는 없습니다. Practice2C에서는 인터페이스와 임플먼트가 1:1이지만 나중에 Appendix. Jetpack Test를 보시면 테스트용 리포지터리를 만드는데에도 이 인터페이스를 이용하게 됩니다.

Coroutine, Flow 질문

0

379

1

Transformations import 안됨

0

570

1

moshi관련 질문입니다.

0

539

2

searchBooks() 에서 북 검색 입력을 너무 빨리 할 경우 마지막 글자로 검색이 안돼요.

0

352

1

안드로이드에서 아키텍처 패턴

0

403

1

RecyclerView.Adapter vs ListAdpater

0

459

1

Flows 와 Coroutine

1

554

1

[BookSearchAdapter] onBindViewHolder의 currentList[position] 질문

0

357

1

코루틴 메모리 관련해서 질문드립니다!

0

440

1

Java Bill Pugh Solution 에서 INSTANCE

0

457

1

nested json에서 특정 부분만 파싱하는법

0

484

1

Fragment에서의 viewBinding

0

510

3

toolbar 질문드립니다.

0

402

2

EditText 에서 delay 주셔서 처리하셨는데 flow 의 debounce() 하고 같은건가요?

2

559

1

코루틴 관련 질문

0

538

1

오류

1

488

2

강사님! 직렬화 라이브러리를 Moshi, kotlin serialization 두개를 사용하시던데 이유가 있으신가요?

1

737

1

EditText 는 kill 해도 값이 잘 저장되어있던데 혹시 제가 잘못테스트했을까요?

1

342

1

서버도 페이징 기능이 되는데 Paging 라이브러리가 필요할까요?

1

519

1

GSON 이 아닌 Moshi 를 사용하시는 이유가 있을까요?

1

1262

1

EditText 는 액티비티가 재생성되어도 값이 남아있던데 이유가 궁금해요

1

491

1

ViewModel 생성시 왜 초기값을 받지 않도록 했을까요?

1

431

1

Room DB에 id 항목 추가

0

246

1

안녕하세요. 용어에 대해 질문이 있어 글 남깁니다.

0

395

2