본문 바로가기

Android/MVP

[Android] MVP 패턴에서 각각의 역할 회사 면접에서 면접관으로 들어가게 되면 대부분 물어보는 것 중 하나가 MVC, MVP, MVVM 중 하나인 것 같다. 본인들 포트폴리오에도 써 있는 부분이기도 하기 때문에 검증을 하려고 하다보니 물어보게 되는 것 같은데... 생각보다 각각의 역할에 대해 제대로 대답한 지원자들이 없었던 것 같다. 신입들은 물론이고 그래도 년차가 쌓이신 분들도 간혹 잘못 알고 계신 분들이 많은 것 같아 정리하고자 한다. M(Model) - 비즈니스 로직 담당 - 데이터 처리 및 가공 P(Presenter) - UI 비즈니스 로직 담당 - 데이터 처리 혹은 가공이 여기서 일어나면 안 됨 - 데이터가 필요한 경우 : View로부터 입력을 전달받음 -> 비즈니스 로직이 필요한 경우 Model에 요청 -> UI 비즈니스 로직에 따..
[Android] google mvp 샘플의 Injection.class 문제 flavor 별로 다 설정해 놓았음에도 불구하고 Injection 클래스를 계속 못 찾는 문제가 있었다. Dagger를 사용한다면 이럴 일은 없겠지만 직접 DI를 샘플을 따라 구현한다면 다음과 같은 문제를 계속 마주치게 된다. 분명 소스는 있는데 해당 소스를 못 찾는..... Invalidate cache도 하고 clean도 하고 Rebuild도 하지만 flavor를 변경할 때마다 계속 문제가 있어서 인터넷에도 찾아봤는데도 원인을 파악할 수가 없었다. 그래서 혹시나 하는 마음에 Injection이라는 class 이름 대신 다른 이름으로 클래스명을 바꿨더니 이게 웬걸 변경을 해도 너무 잘 빌드가 된다. 소스에서 해당 클래스를 못 찾아서 빨간 줄이 가는 현상도 해결이 되었다. 원인은 일단 나중에 찾아보고 이..
[Android] MVP 패턴에는 Contract 인터페이스가 꼭 필요할까? Android MVP 패턴 예제 소스(구글꺼)를 보면 항상 Contract 인터페이스가 존재하는 걸 볼 수 있다. 그리고 그 코드들을 보다보니 Contract 인터페이스를 빼도 되지 않을까라는 생각이 들게 되었고 실제로 Contract 인터페이스를 빼고도 구현을 할 수 있었다. 일단 Contract 인터페이스의 역할은 해당 View와 Presenter가 어떤 메소드(기능)들을 가져야한다는 것을 보여주는 것이라고 생각했었고 이러한 기능을 기준으로 Contract 인터페이스를 만들었을 때 좋은 점과 나쁜 점에 대해 생각해보았다. 1. 좋은 점 Contract 인터페이스 자체가 문서로써의 역할이 가능함 Contract 인터페이스가 Presenter와 View 간의 상호작용에 대한 설계를 도와줄 수 있음 큰 프..