Patrón MVC en Android

Resuelto Mohit Deshpande asked hace 54 años • 21 respuestas

¿Es posible implementar el patrón modelo-vista-controlador en Java para Android?

¿O ya está implementado a través de Actividades? ¿O existe una mejor manera de implementar el patrón MVC para Android?

Mohit Deshpande avatar Jan 01 '70 08:01 Mohit Deshpande
Aceptado

En Android no tienes MVC, pero tienes lo siguiente:

  • Usted define su interfaz de usuario en varios archivos XML por resolución, hardware, etc.
  • Usted define sus recursos en varios archivos XML por configuración regional, etc.
  • Extiende clases como ListActivity , TabActivity y utiliza el archivo XML mediante infladores .
  • Puede crear tantas clases como desee para su lógica empresarial.
  • Ya se han escrito muchas utilidades para usted: DatabaseUtils, Html.
Pentium10 avatar May 27 '2010 22:05 Pentium10

No existe un patrón MVC universalmente único. MVC es un concepto más que un marco de programación sólido. Puedes implementar tu propio MVC en cualquier plataforma. Siempre que se ciña a la siguiente idea básica, estará implementando MVC:

  • Modelo: Qué renderizar
  • Ver: Cómo renderizar
  • Controlador: Eventos, entrada del usuario

Piénselo también de esta manera: cuando programe su modelo, el modelo no debería tener que preocuparse por la representación (o el código específico de la plataforma). El modelo le diría a la vista: No me importa si tu renderizado es Android, iOS o Windows Phone, esto es lo que necesito que renderices. La vista solo manejaría el código de representación específico de la plataforma.

Esto es particularmente útil cuando usa Mono para compartir el modelo con el fin de desarrollar aplicaciones multiplataforma.

Ramon Chan avatar Jun 09 '2011 04:06 Ramon Chan

Las acciones, vistas y actividades en Android son la forma integrada de trabajar con la interfaz de usuario de Android y son una implementación del patrón modelo-vista-modelo de vista (MVVM) , que es estructuralmente similar (en la misma familia que) modelo-vista. -controlador.

Hasta donde yo sé, no hay forma de salir de este modelo. Probablemente se pueda hacer, pero probablemente perdería todos los beneficios que tiene el modelo existente y tendría que reescribir su propia capa de interfaz de usuario para que funcione.

Derick Bailey avatar May 27 '2010 21:05 Derick Bailey

Después de algunas búsquedas, la respuesta más razonable es la siguiente:

MVC ya está implementado en Android como:

  1. Ver = diseño, recursos y clases integradas como las Buttonderivadas de android.view.View.
  2. Controlador = Actividad
  3. Modelo = las clases que implementan la lógica de la aplicación.

(Esto, por cierto, implica que no hay lógica de dominio de aplicación en la actividad).

Lo más razonable para un pequeño desarrollador es seguir este patrón y no intentar hacer lo que Google decidió no hacer.

PD: Tenga en cuenta que la Actividad a veces se reinicia, por lo que no es lugar para los datos del modelo (la forma más fácil de provocar un reinicio es omitir android:configChanges="keyboardHidden|orientation"el XML y encender su dispositivo).

EDITAR

Puede que estemos hablando de MVC , pero será por así decirlo FMVC , Framework--Model--View--Controller . El Framework (el sistema operativo Android) impone su idea del ciclo de vida de los componentes y los eventos relacionados y, en la práctica, el Controlador ( Activity/ Service/ BroadcastReceiver) es ante todo responsable de hacer frente a estos eventos impuestos por el Framework (como onCreate() ). ¿Deberían procesarse las entradas del usuario por separado? Incluso si debería, no puedes separarlo, los eventos de entrada del usuario también provienen de Android.

De todos modos, cuanto menos código que no sea específico de Android pongas en tu Activity// , mejor.ServiceBroadcastReceiver

18446744073709551615 avatar Apr 20 '2012 09:04 18446744073709551615