Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

238
Vistas
¿Por qué deberíamos usar la interfaz en el patrón MVP para Android?

Estoy creando una aplicación de Android usando Kotlin por primera vez usando el patrón MVP . Mi pregunta es, ¿por qué necesito interfaces para View y Presenter ya que Kotlin proporciona funciones de orden superior? ¿No podemos simplemente comunicarnos usando esas funciones de orden superior? ¿Es malo el uso de patrón sin interfaces?

He buscado y leído muchos artículos y tutoriales, pero no respondí a mi pregunta. ¿Lo que estoy haciendo en el siguiente código es una práctica incorrecta? ¿Alguien puede explicar me lo?

en mi actividad

 override fun init() { btn_login.setOnClickListener { LoginPresenter.userLogin(et_emailAddress.text.toString(),et_password.text.toString()){ if (it){ //do something }else{ //do something } } } }

mi presentador

 object LoginPresenter { fun userLogin(emailId: String, password: String, completion: (Boolean) -> Unit) { //do something completion(true) } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

  1. Costos de función de orden superior

    Documentación oficial de Kotlin sobre el costo de las funciones de orden superior

    El uso de funciones de orden superior impone ciertas penalizaciones de tiempo de ejecución: cada función es un objeto y captura un cierre, es decir, aquellas variables a las que se accede en el cuerpo de la función. Las asignaciones de memoria (tanto para objetos de función como para clases) y las llamadas virtuales introducen una sobrecarga de tiempo de ejecución.

    y si está reemplazando todas sus interfaces con funciones de orden superior, puede terminar con un mal desempeño.

2. Las interfaces pueden contener múltiples funciones, para las cuales necesitará parámetros de funciones individuales cuando use funciones de orden superior. Considere el siguiente caso,

 interface UserLoginInterface { fun onLoginSuccess(loggedInUser: User) fun onLoginFailure(error: ErrorResponse) fun onRedirect(someOtherObjectWithDirectives: SomeDataClass) }

Para traducir esto al uso de funciones de orden superior, deberá usar tres parámetros de función

over 4 years ago · Santiago Trujillo Denunciar

0

¿Por qué necesito interfaces para View y Presenter ya que Kotlin proporciona funciones de orden superior?

Esta es una práctica bastante común en el desarrollo de software. Y aunque es posible que no use interfaces, hay una serie de puntos clave por los que las interfaces son preferibles. La parte superior de mi cabeza:

  1. con la interfaz, puede tener múltiples implementaciones sin preocuparse realmente por el tipo concreto de implementación. Esto es lo que te estás perdiendo con las funciones de orden superior: estás restringido con el único tipo, LoginPresenter , cuando usas el método LoginPresenter.userLogin() .

  2. la mayoría de los patrones de diseño se basan en la separación de las interfaces de sus implementaciones. Por lo tanto, programar en implementación en lugar de abstracción no le permitirá utilizarlos.

  3. no podrá realizar correctamente pruebas unitarias de clases que dependan de otras implementaciones, ya que en este caso no es posible burlarse.

  4. el mantenimiento y la extensión del código se vuelven mucho más difíciles con una implementación concreta.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda