Sobes.tech
Junior — Middle

Tudnál magyarázatot adni a Model-View-Intent (MVI) architektúrális mintáról?

sobes.tech MI

Válasz az MI-től

A Model-View-Intent (MVI) architektúra mintát az UI alkalmazások építésére használják, világos felelősségmegosztással és állapotkezeléssel.

Az MVI fő komponensei:

  • Model — az alkalmazás állapotát reprezentálja, általában változatlan. Ez az igazság forrása az UI számára.
  • View — megjeleníti a modell állapotát és küldi a felhasználói eseményeket (szándékokat).
  • Intent — a felhasználó szándékai, amelyek átalakulnak műveletekké az állapot módosításához.

Az MVI-ben az adatfolyam általában így néz ki:

  1. A felhasználó interakcióba lép a View-val, létrehozva egy Intentet.
  2. Az Intent feldolgozásra kerül, frissítve a Modellt.
  3. A Modell frissíti az állapotot.
  4. A View feliratkozik a Modell változásaira és frissíti a UI-t.

Ez biztosítja az egyirányú adatáramlást és az állapot előrejelezhetőségét, ami megkönnyíti a tesztelést és a karbantartást.

Példa Swift-ben (egyszerűsített):

struct Model {
    var text: String
}

enum Intent {
    case updateText(String)
}

class ViewModel {
    private(set) var model = Model(text: "")

    func process(intent: Intent) {
        switch intent {
        case .updateText(let newText):
            model.text = newText
        }
    }
}

Itt a ViewModel fogad egy Intentet és frissíti a Modellt, míg a View megjeleníti a Modell aktuális állapotát.