Этот ответ был обновлен для того, чтобы оставаться актуальной по состоянию на ноябрь 2016 года
Похоже, что вы ищете для architectural patterns, а не design patterns.
Шаблоны проектирования предназначены для описания общего «трюка», который программист может реализовать для обработки определенного набора повторяющихся задач программного обеспечения. Например: В ООП, когда необходимо, чтобы объект уведомлял набор других объектов о некоторых событиях, может использоваться observer design pattern.
Поскольку приложения Android (и большая часть AOSP) написаны на Java, объектно-ориентированной, я думаю, вам будет трудно найти один шаблон проектирования ООП, который НЕ используется на Android.
Архитектурные модели, с другой стороны, не решают конкретные задачи программного обеспечения - они направлены на обеспечение шаблонов для организации программного обеспечения на основе прецедентах компоненты программного обеспечения в вопросе.
Это звучит немного сложно, но я надеюсь, что пример пояснит: если какое-то приложение будет использоваться для извлечения данных с удаленного сервера и представить его пользователю структурированным образом, то MVC может быть хорошим кандидатом для рассмотрение. Обратите внимание, что я ничего не сказал о задачах программного обеспечения и потоке программ приложения - я только что описал его с точки зрения пользователя, и появился кандидат на архитектурный шаблон.
Поскольку вы упомянули MVC в своем вопросе, я бы предположил, что архитектурные шаблоны - это то, что вы ищете.
Исторически, не было никаких официальных руководящих принципов по Google об архитектуре приложений, которые (наряду с другими причинами) привели к полной неразберихи в исходном коде Android приложений. Фактически, даже сегодня большинство приложений, которые я вижу, по-прежнему не соответствуют лучшим методам ООП и не показывают четкой логической организации кода.
Но сегодня ситуация другая: Google недавно выпустил Data Binding library, который полностью интегрирован с Android Studio и даже выпустил набор из architecture blueprints for Android applications.
Два года назад было очень сложно найти информацию о MVC или MVP на Android. Сегодня MVC, MVP и MVVM стали «гудкими словами» в сообществе Android, и нас окружают бесчисленные эксперты, которые постоянно пытаются убедить нас, что MVx лучше MVy. На мой взгляд, обсуждение того, является ли MVx лучше MVy, совершенно бессмысленно, потому что сами термины очень неоднозначны - просто посмотрите ответы на this question, и вы поймете, что разные люди могут связывать эти аббревиатуры с совершенно разными конструкциями.
В связи с тем, что поиск наилучшего архитектурного образца для Android официально начался, я думаю, что мы собираемся увидеть еще несколько идей. На данный момент невозможно предсказать, какой шаблон (или шаблоны) станет в будущем отраслевыми стандартами - нам нужно будет подождать и посмотреть (я думаю, это вопрос года или двух).
Однако есть одно предсказание, которое я могу сделать с высокой степенью уверенности: использование библиотеки привязки данных не станет отраслевым стандартом. Я уверен, что это потому, что библиотека привязки данных (в ее текущей реализации) обеспечивает кратковременную прирост производительности и своеобразный архитектурный ориентир, но в конечном итоге это сделает код не поддерживаемым. Как только долгосрочные эффекты этой библиотеки окажутся на поверхности - она будет оставлена.
Теперь, хотя у нас есть какие-то официальные руководящие принципы и инструменты сегодня, я, лично, не думаю, что эти принципы и инструменты лучшие варианты (и они, безусловно, не единственные) , В моих приложениях я использую собственную реализацию архитектуры MVC. Он прост, чист, читабельен и проверен и не требует дополнительных библиотек.
Этот MVC не просто косметически отличается от других - он основан на теории, что Activities in Android are not UI Elements, что имеет огромные последствия для организации кода.
Итак, если вы ищете хороший архитектурный образец для приложений для Android, который следует принципам SOLID, вы можете найти описание одного из них в своем посте около MVC and MVP architectural patterns in Android.
Учитывая, что платформа Android включает ядро Linux, это слишком большой набор программ для ответа на этот вопрос, кроме «всех шаблонов, названных до сих пор, и, возможно, нескольких новых, если вы достаточно внимательно смотрите» –
@Pete , Ок, возможно, вы правы, но в то же время я не так глубоко, как ядро, меня интересует поверхность приложения, например в iOS 'UIViewController', реализованном с использованием MVC (' UIViewController' является контроллером, а его корневой 'UIView' является представлением),' UIApplication' использует делегирование, имеющее делегат приложения в качестве делегата и т. д. ... – Burjua
Думаю, вам действительно нужно научиться Android из снизу вверх и не пытайтесь «переносить» свои знания с iOS на Android. Там много замечательных книг. Апресс делает кучу. Если вы понимаете жизненный цикл приложения и службы в android, вы должны иметь возможность правильно определять приложения. – blindstuff