¿Qué patrones de código existen para programar aplicaciones de Android?

Uno de los componentes más importantes de su estilo de diseño de código en Android (si entiendo su significado de “patrón”) es cómo organiza la estructura de su paquete. Lo he visto principalmente hecho de dos maneras. Por cierto … esto se refiere a una aplicación y no a una biblioteca ya que el primer ejemplo supone una interfaz de usuario

Dado que su aplicación consta de vistas y clases que los admiten (Actividades, Fragmentos, Adaptadores, etc.) y los datos y la funcionalidad específicos para ellos, algunos usan una estructura de paquete de estilo MVC. Esto significa que crea un subpaquete para cada pantalla que está mostrando, y en este paquete coloca todas las clases que necesitará para construirlo.

com.yourapp.userprofile /
com.yourapp.dashboard /
com.yourapp.settings /
etc …

Personalmente me gusta organizar la estructura de mi paquete por tipos y propósitos de clases. Simplemente me ayuda a verlo mejor. No diría que mi camino es mejor o peor, simplemente funciona para mí. Aquí está la aplicación en la que estoy trabajando en este momento:

com.myapp.activities
com.myapp.adapters
com.myapp.app (clases base, funcionalidad global de la aplicación)
com.myapp.fragments
com.myapp.model
com.myapp.model.translators
com.myapp.model.validators
com.myapp.net (material de red)
com.myapp.tasks (todas mis AsyncTasks)
com.myapp.view (clases de vista personalizadas)
etc …

Solo como ejemplo, en mi trabajo actual me siento directamente al lado de otro desarrollador de Android a tiempo completo, y trabajamos en aplicaciones separadas. Utiliza el estilo MVC mencionado anteriormente, y su código es excelente y la aplicación en la que trabaja también lo es. Cuando necesita agregar una nueva función, el estilo que ha elegido nunca lo bloquea ni lo obstaculiza. Hago las cosas de manera totalmente diferente, y diría lo mismo de mí mismo … Nunca tengo que pensar dos veces acerca de dónde poner algo o cómo estructurarlo, porque el estilo que elegí es cómodo para mí.

Muy similar a esta pregunta, es otra a la que publiqué una respuesta sobre los proyectos de Android de código abierto. Los enlaces en todas las respuestas a esa publicación también serían geniales para leer:

Desarrollo de Android: ¿Cuáles son algunos de los proyectos de código abierto de Android que se deben leer?

Creo que no hay un marco estándar o popular como Spring en JavaEE, mientras que Java o su contenedor web no lo proporcionan. Una razón es que para desarrollar una aplicación, hay suficientes API proporcionadas por el marco de nivel de aplicación de Android. Ya forma algunos patrones de código. Activiy, Intent, ContentProvider no existen en otras plataformas. Pero hay algo que no proporciona Android como ORM y el popular MVC. Creo que los diseñadores de Android se centran en las API esenciales, mientras que no todas las aplicaciones necesitan ORM, lo que puede reducir el rendimiento.

Hay código disponible para ayudar en el desarrollo de Android.

Para inyección de dependencia:
Roboguice, basado en Google Guice. http://code.google.com/p/roboguice/
Spring para Android. http://www.springsource.org/spri

Colecciones de mejores prácticas:
Encendido. https://github.com/kaeppler/igni