5

나는 안드로이드 프로그래밍을 위해 사용할 좋은 디자인 패턴이 MVVM이라는 최근 발표 된 '안드로이드 모범 사례'책을 읽었습니다. 최신 프로젝트에서 직접 시도해 보았을 때 코드를보다 관리하기 쉬운 섹션으로 분리하는 데 도움이되는 것 같습니다.안드로이드 MVVM 디자인 패턴

보기는보기 항목 작성과 ViewModel에 대한 인터페이스 만 처리합니다. ViewModel은보기 및 모델과의 상호 작용에 대한 인터페이스 및 조작 작업을 구현합니다. 아래의 샘플 코드 :

모델

public class MyModel{ 
    public String myString; 
    public MyModel(String myString){ 
     this.myString = myString; 
    } 
} 

보기

public class MyActivity{ 

    public ViewManager delegate; 

    public interface ViewManager{ 
     void registerTextView(TextView tvText); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 
     delegate = new ViewController(this); 
     TextView tvText = (TextView) view.findViewById(R.id.tvText); 
     delegate.registerTextView(tvText); 
    } 
} 

의 ViewModel 그러나

public class ViewController implements MyActivity.ViewManager{ 
    Context activity; 
    TextView tvText; 
    MyModel myModel; 

    public ViewController(Context app_context){ 
     activity = app_context; 
     myModel = new MyModel("Hello World"); 
    } 

    @Override 
    public registerTextView(TextView tvText){ 
     this.tvText = tvText; 
     tvText.setText(myModel.myString);   
    } 
} 

, 나는 온라인으로 다른 곳에서는이 방법을 보았고 많은 정보를 찾을 수없는 생각하지 않은 그것은 안드로이드에 대한 좋은 디자인 패턴을 지원합니다. 또한 다음과 같은 몇 가지 질문이 있습니다.

모든 조각 또는 활동에 대해 별도의 ViewModel을 사용해야합니까?

이 접근법은 다른 클래스의 추가 오버 헤드로 구성 변경 및 활동 레크리에이션에서 잘 수행됩니까? fragmentManager를 사용하려면 컨텍스트를 액티비티에 캐스트 할 수 있습니까?

코드로 표시되는이 축척은 어떻게 더 복잡해 집니까?

누군가가 안드로이드와 함께이 디자인 패턴을 사용하여 경험을 가지고 있습니까 아니면 누군가가 MVVM에 내 모든 프로젝트를 변환하기 시작하기 전에 좋은 학습 자료의 방향으로 나를 가리킬 수 ???

+0

당신이 당신의 코드를 원하는대로, 표준이 없다. 나는 개인적으로 이런 종류의 패턴을 사용하지 않는다. 어떤 이유로 든 그것을 필요로하지 않는다면, 불필요한 추상화를 추가한다고 생각합니다. – Karakuri

답변

4

나는 내 의견을 제시하려고합니다. 나는 당신이 준 샘플 코드가 MVVM (또는 프리젠 테이션 모델 MVVM은 프리젠 테이션 모델에서 유래 됨) 패턴을 적용하는 핵심 가치를 따르지 않았다고 생각한다. 패턴의 주요 동기 중 하나는 뷰 모델 (ViewModel)이 순수 POJO가되도록하여 ViewModel이 최대 테스트 가능성을 허용하는 것입니다. 나는이 책을 읽지 않았지만 마틴 파울러 (Martin Fowler)의 원래 문법을 읽으라고 권합니다. Android 개발에서 패턴을 적용하는 방법을 보여주기 위해 몇 가지 예를 만들었습니다. 관심이 있으시면, 여기를 클릭하십시오 - Album Sample, 마틴 파울러의 원본 앨범 예제의 안드로이드 번역이고, AndroidMVVM, 최소 데모 응용 프로그램입니다.

패턴을 적용하는 한 가지 방법은보기 (활동 또는 조각 + 레이아웃), ViewModel, 모델 (비즈니스 모델 : 지속성 계층, 네트워킹 등)입니다. 이 접근 방식을 사용하여 질문에 대답하기 위해 하나의 조각이 하나의 ViewModel에 매핑된다고 생각합니다.

디자인을 개선하는 패턴입니다. 올바르게 적용하면 복잡성이 줄어 듭니다. 희망이 도움이됩니다.

4

안드로이드 MVVM 디자인 패턴

enter image description here

데이터 바인딩 라이브러리 유연성과 폭 넓은 호환성을 모두 제공 - 다시 안드로이드이 모든 안드로이드 플랫폼 버전과 함께 사용할 수 있도록 그것은, 지원 라이브러리입니다.1

빌드 환경

android { 
    .... 
    dataBinding { 
     enabled = true 
    } 
} 

당신은 단계별로이 link 단계를 따라 당신의 안드로이드 프로젝트에 데이터 바인딩을 적용 할 수 있습니다. 내가 MVVM 패턴에 안드로이드 애플 리케이션을 구축하기위한 라이브러리에 노력하고있다 Link

1

사전 안내 개발자 페이지로 이동합니다. 거기에 예제가 있어야합니다.

https://github.com/manas-chaudhari/android-mvvm

핵심 아이디어 : 여러 XMLS 각 뷰 모델이 모델을 가지고해야 뷰 모델

  • 를 공유 할 수 있지만

    • 각 XML/전망은 뷰 모델이 있어야합니다. 여러 ViewModels는 모델
    • 를 사용하여 데이터 뷰 모델 < 연결하는 바인딩 공유 할 수 있습니다 - 아키텍처>보기

    관련 블로그 게시물 : https://manaschaudhari.com/blog/2016/08/19/rxjava-meets-data-binding-part-3 당신이 할 수있는