MVP de Android | MVP | Presentador de vista de modelo | Patrón de arquitectura de Android
En el desarrollo de aplicaciones de Android, puede seguir muchos patrones para diseñar la arquitectura de la aplicación, como MVVM, MVC y MVP.
El patrón MVP supera los desafíos de MVC y proporciona una manera fácil de crear código de proyecto. La razón por la que MVP es ampliamente aceptado es que proporciona modularidad, capacidad de prueba y una base de código más limpia y fácil de mantener. Consta de las siguientes tres partes:
- Modelo: La capa utilizada para almacenar datos. Es responsable de manejar la lógica del dominio (reglas comerciales del mundo real) y la comunicación con la base de datos y la capa de red.
- vista: Capa UI (interfaz de usuario). Proporciona visualización de datos y realiza un seguimiento de las acciones del usuario para notificar a los presentadores.
- anfitrión: Obtenga datos del modelo y aplique la lógica de la interfaz de usuario para decidir qué mostrar. Gestiona el estado de la vista y realiza acciones en función de las notificaciones de entrada del usuario desde la vista.
Primero debe crear una interfaz para el método que desea utilizar
MainActivityPresenterContract (interfaz)
Esta interfaz tiene los métodos necesarios para manejar la interfaz de usuario y administrar la lógica empresarial.
interface MainActivityPresenterContract interface View
//define methods that you need to use in your View
fun validationError(msg:String)
fun LoginSuccess(msg:String)
fun LoginError(msg: String)
interface Presenter //define business logic methods here
fun doLogin(userName:String,password:String)
anfitrión:
Presentador del evento principal
esta La clase contendrá todos los métodos e implementaciones relacionados con la lógica empresarial.
class MainActivityPresenter:MainActivityPresenterContract.Presenter
var view:MainActivityPresenterContract.Viewconstructor(view: MainActivityPresenterContract.View)
this.view = view
override fun doLogin(userName:String,password:String)
//define your business logic here and call ui method to handle ui
Actividades / fragmentos
Aquí debe implementar devoluciones de llamada relacionadas con la interfaz de usuario y crear una instancia del presentador.
Aquí puede administrar la devolución de llamada del presentador y mostrar la interfaz de usuario en consecuencia.
class MainActivity : AppCompatActivity(),MainActivityPresenterContract.View lateinit var binding:ActivityMainBinding
lateinit var presenter: MainActivityPresenter
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
binding= ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
presenter= MainActivityPresenter(this) //initialized
binding.btnLogin.setOnClickListener
val userName=binding.editTextTextPersonName.text.toString().trim()
val password=binding.editTextTextPassword.text.toString().trim()
presenter.doLogin(userName,password)//called presenter method
// Handling the callback of views from presenter
override fun validationError(msg:String)
showToast(msg)// show validation error here
override fun LoginSuccess(msg:String)
showToast(msg) //do something on success
override fun LoginError(msg:String)
showToast(msg) //show login error to user
fun showToast(msg:String)
Toast.makeText(this,msg,Toast.LENGTH_LONG).show()
Eso es todo.Codificación feliz