Обновление ноябрь 2018
После нескольких лет работы и ведения блогов о MVC и MVP в Android (см. Текст ответа ниже) я решил собрать свои знания и понимание в более полной и легко усваиваемой форме.
Итак, я выпустил полноценный видеокурс об архитектуре приложений Android. Итак, если вы заинтересованы в освоении самых передовых архитектурных шаблонов в разработке для Android, ознакомьтесь с этим подробным курсом здесь .
Этот ответ был обновлен, чтобы оставаться актуальным с ноября 2016 года
Похоже, вы ищете архитектурные шаблоны, а не дизайнерские шаблоны .
Шаблоны проектирования нацелены на описание общего «трюка», который программист может реализовать для обработки определенного набора повторяющихся задач программного обеспечения. Например: в ООП, когда необходимо, чтобы объект уведомил набор других объектов о некоторых событиях, шаблон проектирования наблюдателя может использоваться .
Поскольку приложения Android (и большая часть AOSP) написаны на Java, которая является объектно-ориентированной, я думаю, вам будет сложно найти единый шаблон проектирования ООП, который НЕ используется в Android.
Архитектурные шаблоны , с другой стороны, не решают конкретные программные задачи - они стремятся предоставить шаблоны для организации программного обеспечения на основе сценариев использования рассматриваемого программного компонента.
Это звучит немного сложно, но я надеюсь, что пример прояснит: если какое-то приложение будет использоваться для извлечения данных с удаленного сервера и представления его пользователю в структурированном виде, то MVC может быть хорошим кандидатом для рассмотрения. Обратите внимание, что я ничего не сказал о программных задачах и программном потоке приложения - я просто описал это с точки зрения пользователя, и появился кандидат на архитектурный паттерн.
Поскольку вы упомянули MVC в своем вопросе, я думаю, что архитектурные шаблоны - это то, что вы ищете.
Исторически, в Google не было официальных руководств по архитектуре приложений, что (среди прочих причин) приводило к полному беспорядку в исходном коде приложений Android. Фактически, даже сегодня большинство приложений, которые я вижу, все еще не следуют передовым методикам ООП и не показывают четкую логическую организацию кода.
Но сегодня ситуация иная - Google недавно выпустила библиотеку Data Binding , которая полностью интегрирована с Android Studio, и, даже, выкатила набор архитектурных чертежей для приложений Android .
Два года назад было очень сложно найти информацию о MVC или MVP на Android. Сегодня MVC, MVP и MVVM стали «модными словами» в сообществе Android, и нас окружают бесчисленные эксперты, которые постоянно пытаются убедить нас в том, что MVx лучше, чем MVy. По моему мнению, обсуждать, является ли MVx лучше, чем MVy, совершенно бессмысленно, потому что сами термины очень неоднозначны - просто посмотрите на ответы на этот вопрос , и вы поймете, что разные люди могут ассоциировать эти сокращения с совершенно разными конструкциями.
В связи с тем, что официально начался поиск лучшего архитектурного шаблона для Android, я думаю, мы увидим еще несколько идей. На данный момент невозможно предсказать, какой шаблон (или шаблоны) станут отраслевыми стандартами в будущем - нам нужно подождать и посмотреть (я думаю, это вопрос года или двух).
Однако есть один прогноз, который я могу сделать с высокой степенью достоверности: использование библиотеки привязки данных не станет отраслевым стандартом. Я уверен, что это так, потому что библиотека Data Binding (в ее текущей реализации) обеспечивает кратковременный выигрыш в производительности и своего рода архитектурное руководство, но в долгосрочной перспективе делает код не обслуживаемым. Как только долговременные эффекты этой библиотеки проявятся, она будет заброшена.
Теперь, хотя у нас сегодня есть какие-то официальные рекомендации и инструменты, я лично не думаю, что эти рекомендации и инструменты являются лучшими доступными вариантами (и они определенно не единственные). В своих приложениях я использую собственную реализацию архитектуры MVC. Он простой, чистый, читаемый и тестируемый, и не требует никаких дополнительных библиотек.
Этот MVC не просто косметически отличается от других - он основан на теории, согласно которой Операции в Android не являются элементами пользовательского интерфейса , что имеет огромное значение для организации кода.
Итак, если вы ищете хороший архитектурный шаблон для приложений Android, который следует принципам SOLID , вы можете найти его описание в моем посте об архитектурных шаблонах MVC и MVP в Android .