Оновлення листопада 2018 року
Пропрацювавши і ведучи блоги про MVC та MVP в Android протягом декількох років (див. Основу відповіді нижче), я вирішив захопити свої знання та розуміння у більш всебічній та легкозасвоюваній формі.
Отже, я випустив повноцінний відеокурс про архітектуру програм Android. Тож, якщо вам цікаво оволодіти найсучаснішими архітектурними зразками в розробці Android, ознайомтеся з цим всебічним курсом тут .
Цю відповідь було оновлено, щоб залишатися актуальною з листопада 2016 року
Схоже, ви шукаєте архітектурні візерунки, а не шаблони дизайну .
Шаблони дизайну мають на меті описати загальний "трюк", який може застосувати програміст для обробки певного набору програмних завдань, що повторюються. Наприклад: У ООП, коли є необхідність, щоб об'єкт повідомляв набір інших об'єктів про деякі події, може бути використана схема дизайну спостерігача .
Оскільки програми Android (і більшість AOSP) написані на Java, яка є об'єктно-орієнтованою, я думаю, вам буде важко шукати єдиний шаблон дизайну OOP, який НЕ використовується на Android.
З іншого боку, архітектурні зразки не стосуються конкретних програмних завдань - вони спрямовані на створення шаблонів організації програмного забезпечення на основі випадків використання відповідної програмної компоненти.
Це звучить дещо складно, але я сподіваюся, що приклад з’ясує: Якщо якась програма буде використана для отримання даних з віддаленого сервера та представлення їх користувачеві структуровано, то MVC може стати хорошим кандидатом для розгляду. Зауважте, що я нічого не говорив про програмні завдання та програмний потік програми - я просто описав це з точки зору користувача, і з’явився кандидат на архітектурну схему.
Оскільки ви згадали про MVC у своєму питанні, я здогадуюсь, що архітектурні зразки - це те, що ви шукаєте.
Історично не було офіційних вказівок Google щодо архітектури додатків, що (серед інших причин) призвело до тотального безладу у вихідному коді програм для Android. Насправді, навіть сьогодні більшість застосунків, які я бачу, як і раніше не дотримуються кращих практик OOP і не показують чіткої логічної організації коду.
Але сьогодні ситуація інша - нещодавно компанія Google випустила бібліотеку Data Binding , яка повністю інтегрована з Android Studio і, навіть, розгорнула набір креслення архітектури для додатків Android .
Два роки тому було дуже важко знайти інформацію про MVC або MVP на Android. Сьогодні MVC, MVP та MVVM стали "гучними словами" в Android-спільноті, і ми оточені незліченними експертами, які постійно намагаються переконати нас у тому, що MVx кращий, ніж MVy. На мій погляд, обговорювати, чи MVx кращий за MVy, абсолютно безглуздо, оскільки самі терміни дуже неоднозначні - просто подивіться на відповіді на це питання , і ви зрозумієте, що різні люди можуть пов'язувати ці абревіатури з абсолютно різними конструкціями.
У зв'язку з тим, що офіційно розпочато пошук найкращого архітектурного шаблону для Android, я думаю, ми збираємось побачити ще кілька ідей. На даний момент насправді неможливо передбачити, яка модель (або закономірності) стануть галузевими стандартами в майбутньому - нам потрібно буде зачекати і подивитися (я думаю, це питання року чи двох).
Однак є одне передбачення, яке я можу зробити з високим ступенем впевненості: Використання бібліотеки прив'язки даних не стане галузевим стандартом. З впевненістю можу сказати, що оскільки бібліотека прив'язки даних (при її нинішньому впровадженні) забезпечує короткочасне підвищення продуктивності та якесь архітектурне керівництво, але це зробить код нерентабельним у довгостроковій перспективі. Як тільки довготривалі ефекти цієї бібліотеки вийдуть на поверхню - від неї відмовляться.
Зараз, хоча у нас сьогодні є якісь офіційні вказівки та інструменти, я особисто не думаю, що ці вказівки та інструменти є найкращими доступними варіантами (і вони, безумовно, не єдині). У своїх програмах я використовую власну реалізацію архітектури MVC. Він простий, чистий, читабельний і перевірений і не потребує додаткових бібліотек.
Цей MVC не просто косметично відрізняється від інших - він заснований на теорії, що Діяльність в Android не є елементами інтерфейсу , що має величезний вплив на організацію коду.
Отже, якщо ви шукаєте гарну архітектурну схему для додатків Android, яка відповідає принципам SOLID , ви можете знайти опис у моєму дописі про архітектурні схеми MVC та MVP в Android .