Model은 느낌대로 데이터들
View도 느낌대로 화면에 뜨는 모든것들
Presenter는 뷰에서 데이터를 받아서 가공한뒤 모델로 데이터를 던져준다
뷰는 데이터(모델)를 얻기위해 프레젠터에 요청하고
데이터(모델)는 뷰에 접근하려면 프레젠터에 먼저 가야한다
프레젠터는 뷰와 모델 둘 다의 포인터를 가지고 있지만
뷰와 모델은 프레젠터만 포인터로 가지고 있다
뷰는 모델을 가지고 있지 않고 모델도 뷰를 가지고 있지 않음
중요한 점은 View에서 수행하는 모든 '동작'을 프레젠터로 넘겨주는 것이다
그리고 또 중요한점은 View는 일종의 BaseView를 인터페이스로 구현하여야 한다
그런 뒤에 프레젠터는 View 자체를 가지고 있는게 아니고 BaseView를 가지고 있어야 하며
프레전터가 View에 접근하려면 꼭 BaseView에서 Override된 함수를 이용하게 만들어야 한다
그렇게 해야 프레젠터를 테스팅할때 더미 View를 프레젠터에 전달 할 수 있게 되고, 따라서 테스팅이 수월해진다
결론
MVP의 목적 및 이점
-> View는 어떠한 인터페이스를 구현해야 하고 Presenter는 그 인터페이스를 통해 뷰를 접근함으로서
Presenter를 테스팅할 떄 더미View를 Presenter에 inject시켜서 Presenter의 테스팅을 용이하게 할 수 있음
또한, 많은 코드가 View에서 Presenter로 빠지게 됨으로서 리팩토링/디버깅이 용이해짐
'코딩 > 안드로이드' 카테고리의 다른 글
androidx view.doOnLayout (0) | 2018.12.27 |
---|---|
Android studio code coverage시 Robolectric 사용할 때 ComplexColor 부분 에러 해결 (0) | 2018.09.17 |
jacoco 사용을 위한 환경 세팅 (0) | 2018.09.14 |
심플 프리뷰 메이커 개인정보 처리방침 (0) | 2018.07.29 |
Uri에서 썸네일 가져오기 (0) | 2018.04.29 |