시스템 구성과 동작 원리 등 최상의 소프트웨어를 구성하는 설계도
좋은 코드를 설계하기 위한 방법론
Architecture의 기본중의 기본
안드로이드와 관계없이 프로그래밍 시 가장 널리 사용되는 구조 중 하나
UI(View)와 비즈니스 로직(Model)을 분리
서로 간에 상호작용을 다른 객체(Presenter)에 역할하여 서로의 영향(의존성)을 최소화
기능적으로 작은 단위로 나누어 테스트가 쉽고 큰 프로젝트도 상대적으로 관리하기가 좋은 구조
android os는 사용자가 언제든지 앱 구성요소를 제거 할수 있으므로, 구성요소에 앱 데이터와 상태를 저장하면 안됨
https://github.com/sjjeong/android-tech-spec-in-korea-company