개발/컴퓨터과학

디자인 패턴 공부 예제 -2 :: AAC (ViewModel+LiveData+DataBinding)

레란희 2022. 12. 5. 22:50

'버튼을 누르면 서버에서 랜덤 텍스트를 받아와서 화면에 뿌리는' 앱이다.

구글에서 적극적으로 권장하는 AAC를 이용한 MVVM 패턴을 구현하였다.

 

AAC는 뭐고 MVVM은 무엇인가!

....는 다른 블로그에서 열심히 설명해주니 그림 한 장으로 땡치겠다.

 

▼AAC를 이용한 아키텍처 도식화

 

아.. 위의 그림에는 Observer를 통해 LiveData를 관찰(구독)하라고 되어있는데

나는 하는 김에 DataBinding으로 대체하였다.

 

위의 방식까지만 하고 싶으면 DataBinding은 하지 말고 액티비티에 아래처럼 해 주면 된다.

viewModel.fact.observe(new Observer<String>() {
    void onChange(String s) {
       //갱신 시 할 작업
    }
}

findViewById(R.id.button).setOnClickListener(new OnClickListener() {
    void onClick(View v) {
        viewModel.getData();
    }
}

 

작동 방식은 사실 MVP랑 뭐가 다른지.. 잘 모르겠다 ㅜ.ㅜ

MVP는 '야 해줘 => 야 해줘 => 했어 => 했어 => ㅇㅋ'였고

MVVM은 '야 해줘 => 야 해줘 => (다했다) => ㅇㅇ봤음 => ㅇㅇ봤음' 인 것 같기도..?

 

 


 

 

전체 소스는 아래 참고

https://github.com/YelanJeon/PatternTest/tree/aac_mvvm

 

GitHub - YelanJeon/PatternTest: 디자인 패턴 공부

디자인 패턴 공부. Contribute to YelanJeon/PatternTest development by creating an account on GitHub.

github.com

 

사실 이게 MVVM 패턴에 맞게 개발한건지 모르겠다.

MVVM 패턴의 ViewModel과 AAC의 ViewModel은 다른 거라고 들었기 때문이다.

음 좀 더 공부해서 pure MVVM을 구현하도록 해야겠다 ㅜㅜ