
MVC는 Android에서 컨트롤러에서보기를 멀리하는 깨끗한 접근 방식입니다. 컨트롤러는 모델을 업데이트 할 책임이 있습니다. 모델이 업데이트되면보기에 알릴 수 있으며 적절한 콜백을 사용하여보기를 업데이트 할 수 있습니다. 전통적인 MVC는 a가있는 곳입니다
모델 : 데이터 모델 역할을합니다
보기 : UI가 될 수있는 사용자에 대한 견해를 다룹니다.
컨트롤러 : 모델과 뷰 사이의 상호 작용을 제어합니다. 여기서 View는 컨트롤러를 호출하여 모델을 업데이트합니다. 필요한 경우 뷰는 여러 컨트롤러를 호출 할 수 있습니다.
MVP 접근법을 사용하여 MVC의 일부 단점을 극복 할 수 있습니다. MVP의 발표자는 모든 비즈니스 논리를 포함하고 있으며이 클래스는 Android 컨텍스트 또는 Android 관련 종속성과는 거리가 멀어 테스트 모듈에서 발표자 클래스를 사용하여 비즈니스 로직을 텍스트 할 수있는 유연성을 제공합니다. 안드로이드 관련 종속성은 테스트에서 복잡성을 만듭니다. 발표자는 컨텍스트,보기 등과 같은 Android 종속성이 없으며 모든 모델 업데이트 및 네트워크 요청은 발표자를 통해 수행됩니다. 모델이 업데이트되거나 네트워크 요청이 완료되면 발표자에서 콜백을 사용하여 발표자를 통해보기가 업데이트됩니다. 모델 및 네트워크 요청은 뷰에 직접 접근 할 수 없습니다.
MVVM에는 코드를 짧게 만들고 Java 클래스의 뷰 처리 코드를 줄이기위한 데이터 바인딩 접근 방식이 포함됩니다. 보기 모델은보기를 업데이트 할 책임이 있으며 뷰 모델이보기에 묶여 있으면 뷰가 업데이트 이벤트에 대해 알림을받습니다. 사용자가 모델을 업데이트하면 모델을 클릭 한 다음 콜백을 보내면 뷰가 뷰에 연결될 때 자동으로 뷰를 업데이트하는 모델 뷰를 보냅니다. MVVM은 코드 크기를 줄이지 만 MVVM의 구현은 매우 어렵고 MVVM을 기반으로 큰 프로젝트를 디버그하기가 어렵습니다.


?
프로젝트를위한 올바른 아키텍처를 선택하려면 개발해야 할 모듈에 대한 이해가 포함됩니다. 일부 기능은 MVC에서, 일부는 MVP 및 일부 기능은 MVM을 사용합니다. 데이터 바인딩 및 라이브 데이터로 인해 MVVM에서 작성된 프로젝트를 특히 한 편에 데이터 흐름이없는 프로젝트를 디버깅하는 것은 매우 어렵습니다. 애플리케이션이 소스로부터 연속 데이터 스트림을 수신하고 정기적 인 UI 업데이트가 필요하고 주로 (80-90%) 일방적 인 통신 (예 : Solar-Cell 앱, 인버터 앱 또는 다른 장치 상태 모니터링과 같은 전자 장치가 실시간 데이터 -UI 업데이트로 인해 MVVM에서 잘 작동 할 수 있습니다. 이러한 MVVM 응용 프로그램을 디버깅하는 것은 주요 데이터 흐름이 일방적이므로 쉬운 일이 될 수 있습니다.
MVP는 Java Test Frameworks (Android가 아님)를 통해 비즈니스 로직 WRT 장치 테스트를 테스트하는 데 관심이있을 때 Android 프로젝트를 작성하는 데 좋은 방법입니다. Java Test Framework는 Java 의존성 만 해결하고 Clean Presenter 레이어는 Context, SharedPreferences 또는 기타 com.Android와 같은 Android 관련 종속성이 없습니다. * 패키지. MVP의 단점은 MVC 또는 MVVM으로 작성된 동일한 기능으로 20-25% 추가 코드를 작성한다는 것입니다. MVP는 모듈의 테스트 케이스 및 단위 테스트에 정말로 관심이있는 경우 좋습니다. Java 테스트 키트를 사용하는 MVP의 경우 발표자 인스턴스를 만들고 테스트 기능을 실행하십시오.
예 : 새로운 발표자 (). testSomeFunction () .
MVC는 Android에서 널리 사용되는 기술입니다. Google 자체는 수년간 MVC의 저장소를 썼습니다. 이제 Google이 Github 리포지토리를 위해 MVVM을 채택하고 있습니다.이 repo는 작고 주로 샘플입니다. MVC 애플리케이션은 com.android의 종속성 부족으로 인해 Java 특정 테스트 도구가 아닌 Android 테스트 프레임 워크를 통해 테스트 할 수 있습니다. * Java 특정 도구의 패키지 .
예 :
참고 : 무엇보다도 단일 아키텍처가 없습니다. 하나가 있다면 다른 아키텍처를 배울 필요가 없습니다. 올바른 아키텍처 선택은 초기 요구 사항, 데이터 흐름, 확장 성, 유지 보수, 업데이트 (CRS), 테스트 요구 사항과 같은 여러 요소에 따라 다릅니다.
이 세 가지 Android 아키텍처를 제외하고 "MVI -Model View 의도"라는 더 건축이 하나 더 있습니다. 이것은 Android 개발자들에게 인기가 없습니다. MVI 에 관심이 있으시면이 링크를 확인하십시오.
https://github.com/saksham24/android-simple-mvi-pattern-with-mvp-mvvm-collaboration