Sobes.tech
Middle

MVP memarlıq nümunəsi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

MVP (Model-Görünüm-Sunucu) memarlıq nümunəsidir və biznes məntiqini, məlumatları və istifadəçi interfeysini ayırmaq üçün istifadə olunur.

Əsas komponentlər:

  • Model: Məlumatları və biznes məntiqini təmsil edir. Görünüş və ya Sunucu haqqında məlumatı yoxdur.
  • View: Məlumatları göstərir, istifadəçi interfeysini təmin edir və istifadəçi fəaliyyətlərini Sunucuya yönəldir. Biznes məntiqini ehtiva etmir. View passivdir və yalnız Sunucudan alınan məlumatları göstərir.
  • Presenter: Model və View arasında vasitəçi kimi fəaliyyət göstərir. İstifadəçi interfeysinin hadisələrini işləyir, Model-dən məlumat çıxarır və View-ni yeniləyir. Presenter təqdimat məntiqini ehtiva edir, lakin biznes məntiqini deyil. View-in vəziyyətini idarə edir.

Əlaqə:

  1. İstifadəçi View ilə qarşılıqlı əlaqədə olur.
  2. View, hərəkəti Sunucuya yönəldir.
  3. Sunucu hərəkəti işləyir:
    • Lazım gələrsə, Model-i yeniləyir.
    • Model-dən məlumat tələb edir.
    • Yenilənmiş məlumatlarla View-ni yeniləyir.

Üstünlüklər:

  • Test ediləbilənliyin yaxşılaşdırılması (Sunucu və Model, View-dən müstəqil şəkildə test edilə bilər).
  • Məsuliyyətlərin bölünməsi.
  • Daha yaxşı baxım.

Nümunə (sxem):

// Model
class DataModel {
    getData() {
        // ... məlumatların alınması məntiqi ...
        return { message: "Modeldən salam!" };
    }
}

// Görünüm (sözsüz UI kodu)
class TextView {
    display(data) {
        // Ekranda mətni yenilə
        console.log(data.message);
    }

    onClickButton(handler) {
        // Düyməyə handler qoş
    }
}

// Sunucu
class Presenter {
    constructor(model, view) {
        this.model = model;
        this.view = view;
        this.view.onClickButton(this.handleButtonClick.bind(this)); // Hadisə bağlama
    }

    handleButtonClick() {
        const data = this.model.getData();
        this.view.display(data);
    }
}

// İstifadə
const model = new DataModel();
const view = new TextView(); // Əsl UI görünüşü
const presenter = new Presenter(model, view);