¿Cómo exactamente puede hacer una estructura de una aplicación de Android o decidir qué patrón de diseño de acuerdo con los requisitos que se muestran en las maquetas?

Esa es una pregunta amplia.

Es posible que desee dividir el problema en requisitos funcionales y no funcionales y luego derivar un conjunto de decisiones de diseño de cada uno. Primero, piense en los objetivos de diseño clave de su aplicación.

  • ¿Tiene que ser realmente rápido?
  • ¿Es modular / extensible?
  • ¿Necesita ser muy seguro?

Los requisitos no funcionales tienen un gran impacto en el diseño general de su aplicación. Deben ser claros. Luego, piense en una pila tecnológica general. Las preguntas de ejemplo pueden ser:

  • ¿La aplicación se hará grande, es probable que tenga muchas clases interactuando entre sí? En ese caso, integrar un marco de IoC como Dagger podría ser una buena idea.
  • ¿Necesita mucho acceso a la base de datos? Un marco ORM ligero como Room podría ser útil.
  • ¿Las actividades tendrán muchas operaciones complejas y / o asíncronas? Piense en administrar el estado de la IU en los modelos de vista.

Piensa en los requisitos funcionales:

  • ¿Necesita comunicación de backend? Entonces, es posible que desee introducir algún tipo de capa de servicio. Podría involucrar una biblioteca de programación reactiva como RxJava.
  • ¿Hay alguna biblioteca / algoritmo de dominio especial que necesite integrar? Por ejemplo, visión por computadora
  • ¿Está obligado a proporcionar exportación a ciertas interfaces, por ejemplo, servicios en la nube para compartir archivos?

Espero que esto ayude.