안드로이드에 관한이 MVP와 유사한 것들에 대해 솔직히 머리를 맞출 수는 없습니다. 그 진정한 의미는 무엇입니까?Android MVP : 시험 사용을위한 변명일까요?
지금까지 안드로이드에서 MVP를 사용하는 유일한 실용적인 이유는 프레임 워크 클래스 (예 : 활동, 서비스, 조각)에서 단위 테스트 가능한 코드를 '추출'하는 것입니다. 불가능).
활동 (및 기타 프레임 워크 클래스)은 가능하면 프레젠터에게 작업을 위임합니다 (즉, 프레임 워크에 반응하지 않는 코드를 처리 할 때). 그렇지 않을 경우 직접 작업합니다. 이 때문에 Presenter는 Activity 라이프 사이클을 미러링하는 메서드 (onStart, onResume, clickListener ...)를 가짐으로써 기발한 모습을 보입니다. 이것이 코드 냄새인지 궁금합니다.
MVP Android 앱을 제작하기 위해 엄청난 양의 라이브러리/패턴을 보았지만 정직하게는 각 활동에 자체적으로 발표자를 만들고 관리하는 단점은 무엇입니까? 발표자가 활동의 일부 코드를 '추출'한 것이기 때문에 활동과 발표자를 서로 분리하는 데별로 도움이되지 않습니다. 이는 정의에 의해 긴밀히 연결되어있을 것이며, 발표자는 프리젠 테이션 로직 만 포함합니다 (나머지 비즈니스 로직은 View/Presenter 듀오에 대해 알지 못하는 전용 클래스로 들어갑니다).
저는이 주제에서 약간 길을 잃었습니다. 더 큰 관점을 얻기 위해 다른 의견을 말하고 싶습니다.
에 직면하고 싶지 않을 경우 뭔가에 쉽게 경우 내 제안을 당신이 MVP와 함께 진행해야한다, 당신이 원하는 어디에서나 동일한 발표자를 다시 사용할 수 있습니다 테스트 - 읽기, 유지 관리, 재사용도 쉽습니다. 목록이 계속됩니다. 따라서 테스트는 좋은 코드를 작성함으로써 얻을 수있는 추가 이점입니다. –
테스트는 MVP 패턴의 또 다른 미덕입니다. 분리 된 Presenter를 사용하면 응용 프로그램이 다른 모든 세계와 상호 작용하는 방법 (모든 저장 장치, 통신 등)과 응용 프로그램이 사용자와 상호 작용하는 방법을 분명하게 분리 할 수 있습니다 (활동을 표시하거나 메시지를 로그에 표시하거나 단순히 경고음). –
Presenter에서 액티비티 라이프 사이클 메소드를 복제하는 것이 패턴을 사용하는 최선의 방법이 아닐 수 있습니다. Presenter는 반드시 Android 액티비티가 아닌 모든 뷰에서 작업 할 수 있어야합니다. View가 콘솔이라는 것을 상상해보십시오. Presenter에서'onStart() '를 호출하는 것이 합리적입니까? – Egor