Daum 이미지 검색을 내가 좋아하는 형태로 변경해 보자

구글 샘플과 GDG-ATSL-ON-MVP를 이용

  • 2개의 코드 모두 너무 좋지만 앞으로를 위해서 필요한 부분을 변경해 보려고 합니다. 남들이 보면 이상해 보일수도 있겠지만 구조와 라이브러리르 조금 추가 및 변경해서 원하는 형태로 변경합니다.
  • 원래 코드도 좋지만 이상하게 마음에 안드는 부분을 변경해보려고 합니다.

1. 구글샘플 기반으로 앱을 생성하고 제로브레인님의 다음 이미지 검색기능을 추가 하는 형태로 진행

  • 기본 샘플 생성
  • 버터나이프, 데이터바인딩 은 넣으면 코드가 짧아 지지만 사용 안합니다.
  • 구글 샘플이 좋았던 점은 거의 모든 뷰를 프래그먼트에서 구현 하였던 점입니다.
    • 프로가드 적용시 액티비티 코드는 거의 원형이 남아 있는데 이를 프래그먼트에서 구현 하니 프로가드 적용이 조금더 강력한 느낌 이었습니다.
  • 구글 샘플에서 기본적으로 필요한 것들을 복사해옴
  • rx 를 추가하면 많이 없어질걸로 예상

2. 진행 순서

  • 샘플앱 기본을 정한다.(나중에 해도 됨)
  • MVP 구현은 거의 구글샘플을 기반으로 한다.(프래그먼트)
  • 클린아키텍처 기반으로 앱의 목적을 정한다.
    • 이미지 검색 원하는 문구로 이미지를 검색하고 결과를 클릭하면 이미지가 포함된 URL을 브라우저를 통해서 연다.
    • 엔티티 설정 -> 이미지URL, 이미지 타이틀, 이미지를 포함한 오리지널 URL
  • UseCase 를 만든다.
    • 문자열 입력에 따른 결과값 반환 하는 케이스
    • 대략 => GetImages(String query) 이런 함수로 예상
  • UseCase가 가지고올 레포지토리 생성
  • 원래 구글샘플에 rx 통신 모듈 추가

3. 여러번 반복 하니 편해진다.

  • 아직 대거를 사용하진 못했지만 기본 싱글톤 인젝션 방식으로 구현되어 있어서 대거를 추가하기 쉬어 보인다.
  • 기존에는 다음 API 처리문과 use 케이스가 결합되어 있어서 변경 하면 여기 저기 변경이 많이 발생했지만
  • 지금은 다음에서 네이버로 변경 된다 하더라고 레포지토리만 변경하고 해당 API맞게 받은후 동일한 usecase 를 사용하기에 쉽게 변경 가능하다.

4. mvp 의 장점

  • 당연한거지만 다른 레이어와 완전히 분리되어 있어서 로그만 출력하고 추후 개발이 쉽다.
  • UI 쪽만 따로 개발 및 테스트가 가능하다.

5. 구글 샘플의 콜백

  • use case 콜백은 상당히 유용하다.
  • 처음에는 사용 안하려고 했지만 기본 언어 이외에 사용하는것도 거의 없다.
  • android.os.Handler 만 사용하고 있다.

6. Rx 콜백으로 변경하기

  • 기존 rx 샘플에 만들어 놓은 apicallback 를 이용해 보겠습니다.
  • apicallback 클래스를 복사해서 사용하기

7. 인젝션

  • 현재 인젝션을 싱글톤으로 주입 하는 방법을 선택했습니다.
  • 이를 대거를 이용하는 방법은 추후 진행 하겠습니다.

8. 샘플

  • 입력창에서 문자를 입력하면 핸들러콜백을 이용하는 방식
  • 버튼을 누르면 rx 를 이요하는 방법 입니다.
  • 샘플 코드

PyeongHo

즐겁게 또 즐겁게