Middle
MVP (Model-View-Presenter) nümunəsi haqqında daha ətraflı danışın.
sobes.tech Süni İntellekt
AI-dan cavab
MVP tətbiqi üç qarşılıqlı əlaqəli komponentə bölür:
- Model: Tətbiqin məlumatlarını və biznes məntiqini idarə edir. İstifadəçi interfeysindən asılı deyil.
- View: Məlumatları istifadəçiyə göstərir və onun daxilolmalarını emal edir. Passivdir və qərar qəbul etmə məntiqini ehtiva etmir.
- Presenter: Model və View arasında vasitəçi kimi çıxış edir. Modeldən məlumat alır və onu View üçün formatlayır. View hadisələrinə cavab verir və Modeli yeniləyir. View Presenter-ə, Presenter View-ə interfeys vasitəsilə müraciət edir.
MVP-nin üstünlükləri:
- UI-də dəyişikliklərə davamlılıq: Mantiq Presenter-də yerləşir və müəyyən bir View tətbiqinə bağlı deyil.
- Test ediləbilərlik: Presenter UI-ni mock etmədən izolyasiya şəraitində asanlıqla test edilə bilər.
- Vəzifələrin bölünməsi: Komponentlər arasında aydın rol bölünməsi kodun saxlanmasını asanlaşdırır.
Nümunə:
// View interfeysi
interface MainView {
fun showData(data: String)
fun showError(message: String)
}
// Presenter
class MainPresenter(private val view: MainView, private val model: MainModel) {
fun loadData() {
val data = model.getData()
if (data != null) {
view.showData(data)
} else {
view.showError("Məlumatların yüklənməsində xəta")
}
}
}
// Model
class MainModel {
fun getData(): String? {
// Məlumatların yüklənməsi
return "Nümunə məlumat"
}
}
// Aktivlik (View-in tətbiqi)
class MainActivity : AppCompatActivity(), MainView {
private lateinit var presenter: MainPresenter
private lateinit var textView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView = findViewById(R.id.textView)
val model = MainModel()
presenter = MainPresenter(this, model)
presenter.loadData()
}
override fun showData(data: String) {
textView.text = data
}
override fun showError(message: String) {
textView.text = message
}
}