반응형

MVVM 쓰세요 먼저 써보아라.

 

MVVM을 위해 잘만들어진 MVP 기반을 대체한 이유와 그 방법을 설명할 것이다.

 새로운 프로젝트를 시작할 때, 우리는 우리의 베이스(템프릿) 프로젝트를 기반으로해서 사용할 것입니다. 그것들은 모든 요소 즉 우리가 확실히 앱의 코드에서 사용할 것입니다.

 

그러나, 아키텍쳐의 골든잼을 찾는건 불가능합니다. 모두에게 맞는 것을 말이죠, 특별히 만약 자기가 지속가능한 (sustainable) 인프라를 핵심으로 구축한다면요. 해결책이요? 여러분들의 요구에 가장 적합한 지속적인 업그레이드 및 개선이죠. 이 이야기는 그것에 관한 모든 것들입니다. 이 글은 한 패턴에서 다른 패턴으로의 전환을 설명합니다. 그리고 우리가 MVVM을 위해 잘 만들어진 MVP기반을 대체했는지 이유와 그 방법을 설명합니다.

(MVVM을 사용하려고 잘만들어진 MVP 기반을 사용했는지)

 

우리의 요구와 우리가 만드는 응용 프로그램의 복잡성을 위해 MVVM은 MVP가 수반하는 몇 가지 단점을 제거하는 데 도움이 될 것입니다.

 반면에 MVVM과 관련된 새로운 단점이 나타납니다. 잘 설계된 아키텍처의 이점이 항상 단점을 능가 할 것이기 때문에 우리는 그것들을 개선 할 준비가되어 있어야합니다.

 

새로운 기본 프로젝트를 어떻게 조립했는지에 관심이 있으시면 자세히 설명 할 다음 블로그를 기대 해주세요.

 

MVVM

 다행스럽게도 우리에게, 많은 다른 툴들의 집합들이 있습니다. 그것들은 View에 다리를 놓기 위해 사용됩니다. 그리고 좀더 효율적인 방식으로 비즈니스 로직 레이어를 연결하려고 사용합니다. 그것은 오직 컨셉적인 형태입니다. 특히, MVP는 모든 행크를 풀기 위해 생성하는 경향이 있지만 동시에 일부 이점을 유지합니다 (이해하고 구추가기 쉽고 유지 관리가 용이함 등). 우리는 MVVM과 Android 아키텍처 구성 요소를 사용하기로 결정했습니다.

 또한 MVVM으로 전환하여 위에  언급한 모든 문제를 해결할 수 있습니다.

 

- View와 ViewModel(ex Presenter)이 더이상 긴밀하게 결합되지 않습니다.

- ViewModel 코드가 좀더 일반적입니다.

- 적절한 추상화를 가지고 우리는 이전의 파일이 빠르게 늘어나는 걸 줄일 수 있습니다. 복잡한 화면에서 말이죠.

- 코드들이 좀더 테스트 가능합니다.

- 자동 UI 업데이트가 live입니다.

 

어떻게 동작할까?

 지금, 모든 스크린이 3개의 레이어로 구성됩니다.

View - 여전히 오직 UI액션을 핸들링합니다, 어떤 비즈니스 로직 없이 말이죠. 책임들에 관련된 비즈니스 로직 없이 핸들링합니다.

ViewModel - 뷰의 통신을 핸들링합니다. 나머지 응용프로그램과의 통신을 말이죠 (비즈니스로직 클래스들을 부르는) 그리고 LiveData를 사용하여 소비해야하는 사람에게 state/data를 노출합니다.

Model - 데이터 프로바이더(제공자)입니다. 그것은 데이터베이스를 업데이트하죠, 또한 웹서버와 통신도 합니다.

 

 전체 흐름은 다음과 같습니다. Top에 뷰가 있습니다. 그것은 오직 ViewModel (하나 혹은 그이상)와 의존성을 가집니다. View와 Presenter사이에 더이상 one-to-one 관계가 아니기 때문에, 그것은 다수의 ViewModel들과 어떤 View든간 연결이 가능합니다, ViewModel에 View 참조가 없기때문이죠. ViewModel은 데이터 가져오기/캐싱을 위한 저장소에 의존합니다. 그리고 저장소는 lcao 혹은 remote data source에 의존할 것입니다. 전문 용어 테스트에서 (In testing jargon), 테스트하려는 레이어 아래에는 (저장소 제외) mock을 해야하는 레이어가 하나만 있습니다. (beneath: 아래서)  Finally, since the states/data is exposed to its listeners via LiveData, we get "auto"-UI updates by simply observing it.

최종적으로 state/data나 그것의 리스너들에게 LiveData를 통해 표출되기 때문에 우리는 단순히 그걸 관찰함으로써 auto-UI 업데이트를 얻을 수 있습니다.

 

 

 

 

Until then, feel free to use our MVP or MVVM template project as a free starting pack, depending on what you think suits you better.

 

 

 출처

https://www.bornfight.com/blog/mvp-vs-mvvm-choosing-the-right-android-architecture/

 

반응형