구글 샘플과 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 를 이용해 보겠습니다.
- https://github.com/pyeongho/Sample
- 폴더이름 Retorfit2T
- apicallback 클래스를 복사해서 사용하기
7. 인젝션
- 현재 인젝션을 싱글톤으로 주입 하는 방법을 선택했습니다.
- 이를 대거를 이용하는 방법은 추후 진행 하겠습니다.
8. 샘플
- 입력창에서 문자를 입력하면 핸들러콜백을 이용하는 방식
- 버튼을 누르면 rx 를 이요하는 방법 입니다.
- 샘플 코드
- MyCleanMvp 폴더입니다.
- 프로젝트 그래들에 다음 API 키를 추가해야합니다.
- https://github.com/pyeongho/Sample.git