마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MVP패턴 사용중에 궁금한 점이 생겨서 질문드립니다.

0 추천

구글링을 하면서 많은 사람들이 View에서 Presenter을 객체를 Constract.Presenter 타입으로 생성하였는데 presenter의 초기화를 진행할 때는 또 Presenter 클래스로 초기화를 진행하였습니다.

 이 부분에 대해서 의문점이 생기게 되었는데요 왜 처음부터 클래스를 타입으로 객체를 생성하면 될것 같은데 굳이 Constract.Presenter로 타입을 정하는지 모르겠습니다.

답변주시면 정말 감사하겠습니다.

한수배우겠습니다 (210 포인트) 님이 2022년 2월 25일 질문

1개의 답변

+1 추천
 
채택된 답변
그건 View와 Presenter 의 인터페이스를 MovieSearchContract라는 네임스페이스에 안에 두기 때문에 한 곳에서 모아서 파악할 수 있는 이점이 있다고 보기 때문입니다. 이건 취향 차이라고 생각합니다. 그냥 MovieSearchContract.View 대신에 MovieSearchView, MovieSearchContract.Presenter MovieSearchPresenter를 사용해도 동일하니까요. 어떤 쪽을 사용하든 가독성에 영향을 주지 않는다면 같다고 봅니다.

MVP패턴이 MVVM(엄격히 말하면 ViewModel + LIveData) 이 나오기 전에는 제일 많이 사용이 됐었는데, 문제가 configuration change나 process death에 대처할 만한 적절한 방법이 없어서 모든 함수에서 view가 널인지 체크해야 하고, 무엇보다고 view가 결국은 Activity나 Fragment의 인스턴스라 Presenter에서 View에 대한 레퍼런스를 가지게 됨으로써 별로 권장하지 않은 패턴입니다. 물론 전형적인 MVP는 보여주신 코드같은 구현이지만, 이게 MVP의 구현방법이다라는 정답은 없습니다. MVC, MVP, MVVM은 그냥 디자인패턴의 개념이고 구현은 개인마다 달라질 수 있습니다.
spark (227,930 포인트) 님이 2022년 2월 25일 답변
한수배우겠습니다님이 2022년 2월 25일 채택됨
저도 contract.view말 고 클래스를 객체로 사용해도 결국에는 똑같은게 이상했는데 그냥 사람마다 구현의 방법이 다른거였다니 이제 후련하네요 후...

덕분에 시원하게 해결됐습니다!! 감사합니다!!
...