프로젝트를 진행하다 보면 코드 작성자가 아닌 다른 개발자가 그 코드를 수정해야 하는 상황이 오는데요. 코드를 해석하고 분석하고 버그를 해결하는 데 많은 시간이 소요되는데, 코드가 복잡하고 길다면 더 어려울거에요.
이처럼 코드 분석이 어려워지는 지점에서 코드 분리의 필요성을 느끼게 되는데요. 코드를 보기 편한 방법으로 플랫폼에 맞춰 설계하는 것을 아키텍쳐라고 말해요.
좋은 아키텍처는 개발을 편리하게 하고, 코드 가독성을 좋게 하며, 유지 보수가 쉽도록 도와줘요.
대표적으로 MVC, MVP, MVVM이 있어요.
1. 사용자 입력(Action)들은 Controller에 들어오게 돼요.
2. Controller는 사용자 입력(Action)을 확인하고, Model을 업데이트해요.
3. Controller는 Model을 나타내줄 View를 선택해요.
4. View는 Model을 이용하여 화면을 나타내요.
MVC는 Model을 분리해서 재사용이 가능하지만 Model과 View가 의존성을 가지기 때문에 유지 보수가 어려워요.
1. 사용자 입력(Action)들은 View를 통해 들어오게 돼요.
2. View는 데이터를 Presenter에 요청해요.
3. Presenter는 Model에게 데이터를 요청해요.
4. Model은 Presenter에서 요청받은 데이터를 응답해요.
5. Presenter는 View에게 데이터를 응답해요.
6. View는 Presenter가 응답한 데이터를 이용하여 화면을 나타내요.
Model과 View의 의존성 문제를 개선했지만 Presenter와 View가 1:1 관계이기 때문에 둘이 의존성을 가지게 됐어요.
1. 사용자 입력(Action)들은 View를 통해 들어오게 돼요.
2. View에 사용자 입력(Action)이 들어오면, Command 패턴으로 ViewModel에 사용자 입력(Action)을 전달해요.
3. View Model은 Model에게 데이터를 요청해요.
4. Model은 View Model에게 요청받은 데이터를 응답해요.
5. View Model은 응답받은 데이터를 가공하여 저장해요.
6. View는 View Model과 Data Binding 하여 화면을 나타내요.
Model과 View, View와 View Model 사이의 의존성들을 없앴어요.
[디자인패턴] MVC, MVP, MVVM 비교
Android 아키텍처 비교–MVP, MVVM, SVC–1
안드로이드 아키텍처 패턴 - MVC가 뭘까?
안드로이드 아키텍처 패턴 - MVP가 뭘까?
안드로이드 아키텍처 패턴 - MVVM이 뭘까?