2018 년 11 월 업데이트
몇 년 동안 Android에서 MVC 및 MVP에 대한 작업 및 블로그 작업을 한 후 (아래 답변 본문 참조) 더 포괄적이고 쉽게 소화 할 수있는 형태로 내 지식과 이해를 포착하기로 결정했습니다.
그래서 나는 안드로이드 애플리케이션 아키텍처에 대한 완전한 비디오 코스를 발표했다. 따라서 Android 개발에서 가장 고급 아키텍처 패턴을 익히려면 여기에서이 포괄적 인 과정을 확인하십시오 .
이 답변은 2016 년 11 월부터 관련성을 유지하기 위해 업데이트되었습니다.
디자인 패턴 보다는 건축 패턴을 찾는 것 같습니다 .
디자인 패턴 은 프로그래머가 특정 반복적 인 소프트웨어 작업을 처리하기 위해 구현할 수있는 일반적인 "트릭"을 설명하는 것을 목표로합니다. 예를 들면 : OOP에서, 객체가 일부 이벤트에 대해 다른 객체 세트에 통지 할 필요가있을 때, 관찰자 디자인 패턴 이 사용될 수있다.
안드로이드 응용 프로그램 (및 대부분의 AOSP)은 객체 지향적 인 Java로 작성되었으므로 Android에서 사용되지 않는 단일 OOP 디자인 패턴을 찾는 데 어려움을 겪을 것이라고 생각합니다.
반면에 아키텍처 패턴 은 특정 소프트웨어 작업을 다루지 않으며 문제의 소프트웨어 구성 요소 사용 사례를 기반으로 소프트웨어 구성 을위한 템플릿 을 제공하는 것을 목표로합니다 .
약간 복잡한 것처럼 들리지만 예제가 명확 해지기를 바랍니다. 일부 응용 프로그램을 사용하여 원격 서버에서 데이터를 가져 와서 구조화 된 방식으로 사용자에게 제시하면 MVC 가 고려하기에 좋습니다. 응용 프로그램의 소프트웨어 작업 및 프로그램 흐름에 대해서는 아무 말도하지 않았습니다. 방금 사용자 관점에서 설명했지만 아키텍처 패턴의 후보가 나타났습니다.
귀하의 질문에 MVC를 언급 했으므로 건축 패턴이 당신이 찾고있는 것이라고 생각합니다.
역사적으로 Google은 애플리케이션 아키텍처에 대한 공식 가이드 라인을 제공하지 않았으며, 그 이유는 무엇보다도 Android 앱의 소스 코드에 큰 혼란을 초래했습니다. 실제로 오늘날까지도 볼 수있는 대부분의 응용 프로그램은 여전히 OOP 모범 사례를 따르지 않으며 명확한 논리적 코드 구성을 보여주지 않습니다.
그러나 오늘날 상황은 다르다. 구글은 최근 안드로이드 스튜디오와 완벽하게 통합 된 데이터 바인딩 라이브러리를 출시했으며 심지어 안드로이드 애플리케이션을위한 일련의 아키텍처 청사진을 발표했다 .
2 년 전에는 Android에서 MVC 또는 MVP에 대한 정보를 찾기가 매우 어려웠습니다. 오늘날 MVC, MVP 및 MVVM은 Android 커뮤니티에서 "버즈 워드"가되었으며 MVx가 MVy보다 낫다는 것을 지속적으로 확신시키는 수많은 전문가들로 둘러싸여 있습니다. 내 의견으로는 MVx가 MVy보다 나은지에 대한 논의는 용어 자체가 매우 모호하기 때문에 전혀 의미가 없습니다. 이 질문에 대한 답변을 살펴보십시오. 다른 사람들 이이 약어를 완전히 다른 구성과 연관시킬 수 있음을 알게 될 것입니다.
안드로이드에 가장 적합한 아키텍처 패턴에 대한 검색이 공식적으로 시작 되었기 때문에 몇 가지 아이디어가 더 나올 것이라고 생각합니다. 이 시점에서 미래에 어떤 패턴이 산업 표준이 될지 예측하는 것은 실제로 불가능합니다. 우리는 기다려야 할 것입니다 (1 ~ 2 년 문제라고 생각합니다).
그러나 높은 신뢰도로 만들 수있는 한 가지 예측이 있습니다. 데이터 바인딩 라이브러리의 사용은 업계 표준이되지 않습니다. Data Binding 라이브러리 (현재 구현)는 단기적인 생산성 향상과 일종의 아키텍처 지침을 제공하지만 장기적으로는 코드를 유지 관리 할 수 없다고 확신합니다. 이 라이브러리의 장기적인 효과가 드러나면 포기됩니다.
현재 공식적인 지침과 도구가 있지만, 개인적으로 이러한 지침과 도구가 최선의 선택이라고 생각하지는 않습니다 (그리고 반드시 유일한 것은 아닙니다). 내 응용 프로그램에서는 MVC 아키텍처의 자체 구현을 사용합니다. 간단하고 깨끗하며 읽기 쉽고 테스트 가능하며 추가 라이브러리가 필요하지 않습니다.
이 MVC는 다른 것들과 외형 적으로 다를뿐 아니라 Android의 활동이 UI 요소가 아니라는 이론을 기반으로하며 이는 코드 구성에 큰 영향을 미칩니다.
따라서 SOLID 원칙 을 따르는 Android 응용 프로그램에 적합한 아키텍처 패턴을 찾고 있다면 Android의 MVC 및 MVP 아키텍처 패턴에 대한 내 게시물에서 설명을 찾을 수 있습니다 .