MVVM vs MVP

MVVM vs MVP

Alain Nicolás Tello Alain Nicolás Tello
7 minutos

Leer el artículo
Audio generated by DropInBlog's Blog Voice AI™ may have slight pronunciation nuances. Learn more

Descubre todas las diferencias

En este post vamos a comparar MVVM vs MVP e indicaremos todas las diferencias existentes entre estos dos patrones mientras analizamos qué patrón es mejor para Android.

Artículo original de Medium por Alain Nicolás Tello.


El desarrollo en Android ha ido madurando con el paso de los años. Y como toda buena plataforma, al poco tiempo los desarrolladores empezaron a preguntarse qué patrones de diseño podrían plasmar en este nuevo paradigma.

El primer patrón popular y lo suficientemente robusto fue MVP (Model-View-Presenter). Derivado del popular MVC, otro patrón muy común en diferentes lenguajes de programación orientados a objetos, MVP es fácil de implementar y cuenta con mucha flexibilidad para trabajar en armonía con otros patrones y arquitecturas.

Pero luego nació MVVM (Model-View-ViewModel), de la mano de Microsoft. Este patrón se adaptó en Android y tuvo una gran aceptación. Hoy en día es incluso recomendado por el equipo oficial de Android, ya que su arquitectura de componentes se basa en MVVM.

A lo largo de mi experiencia como desarrollador Android y en base a las preguntas que me dejan mis alumnos en Udemy, a continuación te presentaré algunas de las preguntas más frecuentes y sus respuestas con respecto a que patrón es mejor para Android.

Empecemos con la más básica:

¿Es necesario implementar un patrón de diseño en mis apps?

Mi respuesta: Como tal no, no es necesario para poder desarrollar. Pero si quieres hacerlo de forma profesional, si tu objetivo es trabajar en equipos de desarrollo donde exista armonía a la hora de asignar tareas para corregir errores, entender el código de otros o refactorizar ciertos módulos / capas / etcétera… Entonces sí, claro que deberías aprender a utilizar patrones de diseño.

¿Qué patrón de diseño debo utilizar?

Mi respuesta: Cualquiera que se adapte a tus necesidades. Cada empresa, incluso cada proyecto, tiene ciertas características que podrían definir hasta qué punto les ayudaría implementar patrones de diseño.

Para proyectos pequeños, 1 o 2 están bien; para grandes proyectos, 4 o 5 podrían solventar problemas con mayor eficacia.

Para el caso de Android, los grandes patrones que funcionan como columna vertebral son MVP y MVVM. Ambos tienen resultados asombrosos si se implementan con buenas prácticas.

¿Es MVVM el mejor patrón de diseño para Android?

Mi respuesta: Sí y no. El “no” es debido a que hay otras arquitecturas que funcionan muy bien, como ya mencionamos antes. MVP es una alternativa viable y si ya estás aplicando algo con repository o incluso combinado con clean, puedes mantenerte sin problema.

Pero… hay un gran pero. El “sí” es porque MVVM es el patrón de diseño más popular para Android hoy en día. Es impulsado por el mismo Google y es más amigable con Android Jetpack. Así que sí, podríamos decir que es el más indicado para implementar de cara al futuro.

¿Cómo empezar a usar MVP o MVVM?

Con todo lo anterior, podrías decir: "Vale, me interesa saber más sobre estos patrones. ¿Cuál es el primer paso?"

Si quieres aprender un poco más, a continuación de dejo unas breves descripciones de MVVM y MPV, respectivamente.

¿Qué es MVVM?

Bueno, básicamente es un patrón de diseño que separa tu código en capas, desde la vista, los datos y la lógica de negocio o casos de uso.

La View no tiene lógica, solo muestra información y reacciona a las acciones del usuario.

Model consigue los datos y puede contener lógica del negocio.

ViewModel es el intermediario, se comunica con View y Model. La diferencia es que con View lo hace de acuerdo al patrón observable.

Si te interesa el tema, te invito a ver el siguiente vídeo. En 4 minutos sabrás todo lo elemental de MVVM, como funciona y mucho más:

 

¿Que es MVP?

Similar a MVVM, pero aquí sí se conecta directamente el presentador a la vista. Aunque lo ideal es hacerlo a través de interfaces, de esta forma mantenemos las capas abstractas. Esto aplica para todas las conexiones de este patrón.

Si te interesa saber en detalle cómo trabaja MVP, te comparto el siguiente vídeo. En 8 minutos no te quedará duda de cómo funciona en detalle MVP:

A simple vista, parecen ser muy similares y de hecho, ¡en principio lo son! Pero a la hora de implementarlos, siíque tienen sus particularidades que nos obligan a implementar más cosas que sin duda, hacen evidente su gran diferencia a la hora de codificar.

Sin embargo, como ya se mencionó antes, los resultados de cada uno son realmente buenos si se respetan sus principios.

Así que si tú ya usas MPV o MVVM, no tienes por qué migrar al otro. Y si no los conocías o no los usabas, no está de más aprenderlos. No por necesidad, pero quizá sí por subir tu nivel de conocimientos o por algún trabajo donde te exijan trabajar con más de un patrón de diseño.

Conclusión

Como recomendación personal y basándome en mi experiencia, te diría que dependiendo de tu posición elijas cuál de los siguientes escenarios se acomoda mejor a tu situación actual para comenzar:

  • Soy nuevo en Android: MVVM
  • Conozco MVC: MVP
  • Conozco Android, pero solo con Java: MVP
  • Sé Android con Java y Kotlin: MVVM
  • Solo sé Android con Kotlin: MVVM
  • Quiero buscar trabajo como desarrollador Android: MVVM, MVP, Repository y Clean

Y nada, eso es todo por el momento. Si te interesa saber más sobre el tema, puedes dejar tus preguntas o indagar en mis redes sociales (búscame como Alaín Nicolás Tello o como Cursos Android ANT). Siempre comparto contenido sobre Android. Así puedes seguir formando tu carrera como un Android Developer.


Si te gusta la información que traemos para ti, dale “Me Gusta” a nuestra página de Facebook. Síguenos a través de nuestro canal de Youtube, donde puedes ver el distinto material que preparamos para ti, y si lo deseas, puedes suscribirte a nuestra página para recibir un regalo digital que preparamos para ti. Esperemos que con este artículo te haya quedado más clara la diferencia entre MVVM vs MVP.

Por último, compartimos contigo un enlace para que accedas a nuestra Ruta de Aprendizaje en Android. Podrás convertirte en todo un experto. ¡Nos vemos en clase!

« Volver al Blog

Obtener mi regalo ahora