2021. 11. 13. 08:31ㆍDiary/300~400
< 소스 코드 >
https://github.com/KwonGeneral/new_mbti_commnunity.git
GitHub - KwonGeneral/new_mbti_commnunity: 레거시 코드 개편
레거시 코드 개편. Contribute to KwonGeneral/new_mbti_commnunity development by creating an account on GitHub.
github.com



RxJava의 장점은
API 통신 중간중간
후킹을 할 수 있다는 점이다.
다만, 아직까지는 이러한 부분이
언제 쓰이는게 좋은건지
직접 겪어보지 않아서
와닿지가 않는다.
또한, 사용법도 제대로 숙지가 안되서
아직까지는 자연스럽게 쓰질 못한다.
최대한 많이 써보고
연습해서 감을 잡아야할 것 같다.
이번에 MVVM에 대해서도 느낀게
예를 들어, 버튼 클릭 이벤트를 처리한다면
View -> 지금 버튼 눌렸어
ViewModel -> 잠깐만 기달려봐... 지금 알아야되는게 있는데 Model한테 값좀 물어볼게.
Model -> 어디다 쓸지는 모르겠는데 값이 얼마인지는 알려줄게.
ViewModel -> 어디보자.. 이 값이 이거니까.. 쿵짝쿵짝... 화면 전환 시키면 되겠네
View -> 화면 전환하라는거지? 알았어~
여기서 특징을 뽑자면
View는 이벤트가 발생했다는
사실을 전달해주고 결과값만 받는다.
이 과정에서 View는 어떤 값이 들어가고
과정이 어떤지는 전혀 모른다.
그저 결과만 받고,
그에 따라서 화면을 처리한다.
ViewModel은 View에서
이벤트가 발생했다는 사실을 전달받는다.
다만, 어떤 로직을 수행해서 결과를
전달해줘야하는데
이 로직에서 필요한 값에 대해서는
전혀 알지 못한다.
값에 대한 것은 Model에게 물어보고
그 값에 따라서 로직을 처리한다.
Model은 그저 값만 가지고있다.
이 값이 어디에 쓰이고 어떻게 변하는지
그런 것은 전혀 모른다.
그저 어떤 값이 있고 그 값의
타입이 어떤지만 알고있다.
ViewModel이 값에 대해서 궁금해하면
그 값을 알려주기만하지
이 값이 어디에 쓰이는지
어떤 과정을 거칠지 그러한 것들은
전혀 모른다.
즉, View와 ViewModel은
옵저빙으로 돌아가고.
Model은 가만히 있는다.
예를 들어, 로그인을 한다고 가정하면
아이디와 패스워드가 입력된 상태에서
로그인 버튼을 클릭하면
View는 ViewModel에게
로그인 버튼이 눌렸다는 것을 알려준다.
ViewModel은
Model에게 사용자가 입력한
아이디와 비밀번호가 뭔지 물어본다.
Model은
아이디랑 비밀번호라는게 뭔지는 모르지만
일단 값이 뭔지는 ViewModel에게 전달한다.
ViewModel은
아이디와 비밀번호를 받고
서버와 통신한 후에
회원일 경우에는 메인 화면으로
아닐 경우에는 경고창을 띄우라고
View에게 전달한다.
View는
메인화면으로 이동하라고 받으면
메인화면으로 이동시키고
경고창을 띄우라고 받으면
경고창을 띄운다.
나는 MVVM에 대해서
위의 생각대로 이해했다.
다만, 이를 바탕으로 코드를 짜는건
생각보다 꽤 어렵다.
아직까지는 몸에 배지가 않아서
멈칫멈칫 거리는 순간들이
꽤 많고,
각자의 역할을 침범하게
코드를 작성하는 경우도 빈번하다.
또한, 이번에 느낀 것은
싱글톤 패턴의 사용 시점이다.
무조건 싱글톤을 사용한다고 좋은게 아니라
사용 이유를 생각해야 한다.
만약, 자원에 대한 공유가 필요없고
매 번 초기화를 시켜줘야한다면
싱글톤을 사용했을 경우,
하나하나 초기화를 해줘야한다.
다만, 싱글톤을 사용하지 않는다면
매 번 호출할 때마다
값이 초기화가 되기 때문에
초기화에 대한 부분은
걱정하지 않아도 된다.
앞으로도 배우고 고쳐나갈 부분이 많다.
노력하자~!
'Diary > 300~400' 카테고리의 다른 글
321일차 - IT 영단어 앱 간단한 구조 잡아놓기 (0) | 2021.11.15 |
---|---|
320일차 - 코틀린 Xml Style & Custom Widget (0) | 2021.11.14 |
318일차 - MBTI 앱 레거시 코드 개편 (0) | 2021.11.12 |
317일차 - DiffUtil (0) | 2021.11.11 |
316일차 - 안드로이드 개발 팁 & 코루틴 정리 (0) | 2021.11.10 |