Android MVP : Interactor 란 무엇입니까?
인터랙 터 란 무엇입니까? MVP 디자인에 어떻게 맞습니까? 인터랙 터 사용과 프레젠터에 인터랙 터 코드를 넣는 것의 장점 / 단점은 무엇입니까?
MVP는 God Activity 문제 (너무 많은 줄이있는 Activity / Fragment)를 해결하기 위해 존재합니다.
필수는 아니지만 (원하는 패턴으로 코딩 할 수 있음) 많은 개발자가 MVP가 Android에 적합하다는 데 동의합니다. 소스 코드를 더 깨끗하고, 테스트 가능하고, 유지 관리 가능하고 강력하게 만듭니다.
인터랙 터를 "모델 / 컨트롤러"라고 생각할 수 있습니다. 인터랙 터는 데이터베이스, 웹 서비스 또는 기타 데이터 소스에서 데이터를 가져옵니다. 데이터를받은 후 인터랙 터는 발표자에게 데이터를 보냅니다. 따라서 UI를 변경합니다.
별도의 클래스에서 인터랙 터를 사용할 때의 장점은 클래스를 분리하여 더 깔끔하고 테스트 가능하게 만든다는 것입니다. 물론 발표자 내부 클래스에 인터랙 터를 넣을 수 있지만 요점은 무엇입니까? 발표자에 인터랙 터를 넣을 때의 단점은 발표자 클래스가 커지고 상대적으로 읽고 관리하기가 더 어려워진다는 것입니다.
업데이트 : 물론 이것은 단순히 지나치게 단순화 한 것입니다. 더 깊이 파고 싶다면 fernando cejas 블로그 또는 antonio leiva 블로그를 볼 수 있습니다.
Interactor는 Domain Layer와 Presentation Layer를 분리하는 클래스입니다. 간단히 말해서 UI 조작에 사용되는 코드와는 별도로 비즈니스 로직을 작성하는 방법을 제공합니다 (데이터를 UI / 애니메이션 / 내비게이션에 바인딩).
따라서 Interactor는 Presenter / ViewModel과 Repository 패턴 사이의 중재자입니다.
MVP에서 Interactor 패턴을 사용하지 않았지만 MVVM에서 사용했습니다. Interactor는 UseCases에 서로 바꿔서 사용할 수 있습니다.
예를 들어 목록에 표시 할 범주를 가져 오는 사용 사례를 살펴 보겠습니다 (아래 예에서 Presenter는 MVP를 나타내고 ViewModel은 MVVM 패턴을 나타냄).
- View (Activity / Fragment)는 Presenter / ViewModel의 메서드를 호출하여 categoryList를 가져옵니다.
- 그런 다음 Presenter / ViewModel은 상호 작용기의 메서드를 호출하여 categoryList를 가져옵니다.
- Interactor는 Repository의 (CategoryRepository) 메서드를 호출하여 categoryList를 가져옵니다.
- 리포지토리에는 웹 서비스 (원격 데이터 소스) 또는 DB 스토리지 (로컬 데이터 소스) 또는 캐시 (임시 스토리지-리포지토리 클래스에서 가변적 일 수 있음)에서 범주를 가져올 지 여부를 결정하는 논리가 있습니다.
- 리포지토리는 선택한 데이터 소스에서 가져온 categoryList를 Interactor에 반환합니다.
- Interactor는 categoryList (일부 형식 등)를 처리하여 Presenter / ViewModel로 보냅니다. Interactor는 처리가 필요하지 않은 경우 Presenter / ViewModel에 직접 목록을 보낼 수 있습니다.
- Presenter / ViewModel은 categoryList를 매개 변수로 사용하여 View의 메소드를 호출합니다.
- 보기에 애니메이션이 있거나없는 categoryList가 표시됩니다.
이 과정에서 Interactor를 피할 수 있으므로 Repository-> Interactor-> Presenter / ViewModel 과 같은 데이터 흐름을 사용하는 대신 Repository-> Presenter / ViewModel 이 이런 방식으로 통신 할 수 있습니다 . 여기에서 Presenter / ViewModel은 도메인 레이어뿐만 아니라 프레젠테이션의 일부가됩니다. 위에서 말했듯이 Interactor는이 두 레이어의 분리기 역할을합니다.
이 개념을 참조 용으로 설명하기 위해 간결하게 작성된 블로그입니다.
- mvvmi를 사용한 클린 아키텍처
- 인터랙 터가있는 android-mvp-architecture-extension-extension-with-interactor
- 안 드 로이드 클린 방법 설계
Interactor의 역할을 더 잘 이해하는 데 도움이되기를 바랍니다. 행복한 코딩 !!!
Interactor에는 애플리케이션의 사용 사례가 포함되어 있습니다. 즉, 프로젝트의 비즈니스 도메인에 대한 모든 구현이 포함됩니다.
다음은 MVP 패턴을 사용하여 Android 애플리케이션 아키텍처 에 대한 매우 잘 구성된 기사 입니다. , 나는 당신이 공부하는 것이 좋습니다.
또한 MVP 패턴과 Instagram API를 사용하여 JuicyInsta 라는 Android 애플리케이션을 만들었습니다 . 여기 github에서 공유됩니다.
개인적으로 저는 모델과 다른 View, Present 및 Interactor를 사용합니다.
Interactor는 데이터베이스, 서버 등에서 데이터를 검색하는 유용한 메서드가있는 클래스로 생각할 수 있습니다 . 데이터를 얻은 후 Interactor에서 모델을 채우고 발표자에게 다시 제공 할 수 있습니다.
EG Asynctask를 생성하여 사용자를 인증 한 다음 수신 된 데이터로 UserModel을 채우는 LoginInteractor를 가질 수 있습니다.
참조 URL : https://stackoverflow.com/questions/35746546/android-mvp-what-is-an-interactor
'programing' 카테고리의 다른 글
Android 지원 디자인 라이브러리와 함께 제공되는 FAB에 그림자를 추가하는 방법은 무엇입니까? (0) | 2021.01.17 |
---|---|
배열에 값이 있는지 확인 (AngularJS) (0) | 2021.01.17 |
연도를 4 자리에서 2 자리로 변환하고 다시 C #으로 변환 (0) | 2021.01.17 |
Junit 4가 기본 테스트 클래스를 무시하도록하는 방법은 무엇입니까? (0) | 2021.01.17 |
POST 매개 변수를 사용하여 UIWebView를 통해 웹 페이지로드 (0) | 2021.01.17 |