
더 나은 방법이나 틀린 내용이 있을 시에 댓글 남겨주시면 감사하겠습니다.
2022-04-08 작성되었습니다.
🔍 시작하기
안드로이드를 처음 배우기 시작할 때는, Activity 단 하나의 클래스에 모든 처리를 다 집어놓곤 했다.
그러다보면 내가 짠 소스임에도 어디가 무슨 기능을 하는건지 알 수도 없고,,,
지금 보면 말도 안되는 엄청난 스파게티 코드.. 머릿속에서 떠오르는 그대로 옮겨 적기만 한 코딩..
그러다가 디자인 패턴이란 것을 알게 되면서 하나씩 정리해 보고 지금은 그럭저럭 적용하는 중이다.
처음에는 이게 뭐지... 내 개발에 어떻게 적용할 수 있을까? 생각하느라 머리가 터질뻔했다.
개인적인 견해로는 러닝커브가 낮은 편은 아니다.
그러나 코드의 가독성이나 유지보수성을 생각한다면 적용하는 것이 무조건 좋다.
물론 규모가 작은 프로젝트의 경우는 오히려 오버헤드가 커진다.
✅ 디자인 패턴이란?
그렇다면 디자인 패턴이란 무엇인가?
사전적인 의미로는 "소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책"이라고는 하는데 이것만 봐서는 무슨 소린지 잘 모르겠다.
쉽게 설명하자면 개발을 하면서 축적된 노하우를 가지고 공통적인 패턴을 만들어 재사용하기 위한 방식이라고 생각하면 된다. 단순히 안드로이드 개발에만 적용되는 것이 아닌 모든 소프트웨어 개발에 적용될 수 있는 기술이다.
본 글에서는 그 중 하나인 MVVM 패턴에 대해 기술한다.
✅ MVVM

MVVM 패턴은 비즈니스 로직과 프레젠테이션 로직을 UI와 분리하기 위한 목적으로 등장했다.
위의 그림에서 볼 수 있듯이
View는 View Model을 알지만, View Model은 View를 알지 못하고
View Model은 Model을 알지만, Model은 ViewModel을 알지 못한다.
View
View는 안드로이드에서 Activity, Fragment라고 생각하면 된다.
View Model로부터 받아온 데이터에 따라 UI를 변경해 주는 목적이다.
View Model
View가 데이터를 가져올 수 있는 프로퍼티나 메서드가 구현되는 곳이다.
프레젠테이션 로직이 구현되며 그에 따른 상태 변화를 View에게 알려준다 (Send notifications)
Model
앱에서 사용될 데이터를 캡슐화 하는 클래스이다.
DTO, POJO 등이 이에 해당하겠다.
비즈니스 로직이 구현되며 그에 따른 상태 변화를 View Model에게 알려준다 (Send notifications)
만약 View에서 애니메이션을 보여줄 때 오류가 발생했다고 가정해보자,
단순히 UI를 그려주는 과정에서 발생한 오류로 View Model이나 Model쪽은 확인할 필요가 없는 것이다.
이처럼 정형화된 패턴이 더욱 코드의 유지보수성을 높인다.
안드로이드에서 AAC(Android Architecture Components)를 지원하면서 디자인 패턴을 더욱 손쉽게 적용할 수 있게 되었다. 그런데 알고가야할 사실이 하나 있다 AAC의 ViewModel은 MVVM의 뷰모델이 아니다. 사실 처음엔 이름이 똑같길래.. 같은건 줄 알았지.. 이 글에서 따로 설명하기엔 너무 길어지므로 정리가 잘 된 글로 대체한다. (쾌락코딩님의 블로그)
✅ 마무리
사실 MVVM을 검색하면 무조건 따라오는게 Clean Architecture이다.
둘 중 하나만 적용하는 것이 아닌 함께 적용해야 더욱 의미가 커지므로 다음 글에서는 Clean Architecture에 대해서 적어보도록 하겠다.
단순히 이렇게 좋은 디자인 패턴이 있으니 무조건 따라하자!가 아니라
정확히 그게 무엇인지 알고 적용하는게 의미가 있는 것 같다.
'Object-Oriented Programming' 카테고리의 다른 글
| 안드로이드 개발의 SOLID 원칙 (0) | 2022.05.09 |
|---|