Junior — Middle
MVP və MVI memarlıq nümunələri arasındakı fərqləri izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
MVP (Model-Görünüm-Presentor) və MVI (Model-Görünüm-Niyyət) memarlıq nümunələri, Android daxil olmaqla tətbiqlərdə kodun təşkili üçün istifadə olunan arxitektura nümunələridir, lakin onlar vəziyyətin idarə olunması və komponentlərin qarşılıqlı əlaqəsi baxımından fərqli yanaşmalara malikdir.
MVP:
- Görünüm istifadəçi ilə qarşılıqlı əlaqə və göstərmə üçün cavabdehdir.
- Presentor məntiqi ehtiva edir, istifadəçi fəaliyyətlərini işləyir, Görünümü yeniləyir.
- Model məlumatlar və biznes məntiqini təmsil edir.
- Presentor birbaşa Görünümü yeniləyir, çox vaxt interfeys vasitəsilə.
MVI:
- Görünüm istifadəçi niyyətlərini (Intent) yaradır.
- Intentlər Modelə göndərilir, onlar işlənir və yeni vəziyyət (State) ilə geri qaytarılır.
- Görünüm vəziyyət axınına abunə olur və ona əsasən yenilənir.
- Bir istiqamətli məlumat axını memarlığı, vəziyyətin idarə olunmasını sadələşdirir və proqnozlaşdırıla bilən edir.
Əsas fərq: MVP Görünüm və Presentor arasında ikitərəfli qarşılıqlı əlaqə istifadə edir, MVI isə dəyişməz vəziyyətlə bir istiqamətli məlumat axını təmin edir, bu da debugging və testləri asanlaşdırır.
Kotlin-də sadələşdirilmiş MVI nümunəsi:
sealed class Intent {
object LoadData : Intent()
}
data class ViewState(val data: String, val isLoading: Boolean)
class Model {
fun process(intent: Intent): ViewState {
return when(intent) {
is Intent.LoadData -> ViewState(data = "Yüklənmiş məlumatlar", isLoading = false)
}
}
}