Se devo verificare l'integrità delle stringhe provenienti dalla vista, dove dovrei farlo?

1

Lo scenario:

Ho una GUI con campi di testo e pulsanti di opzione dove l'utente inserisce le informazioni per una "Persona"

Ecco le classi del modello e del modello di visualizzazione:

enum Gender 
{
    case Male, Female
}

class Person
{
    var name: String = ""
    var surname: String = ""
    var id: String = ""
    var gender: Gender?

    setDataFromViewModel(model: PersonViewModel)
    {
        // doing stuff
    }
}

class PersonViewModel
{
    var name: String = ""
    var surname: String = ""
    var id: String = ""
    var gender: Gender?

    init(person: Person)
    {
        // doing stuff with the strings to make them nice
    }
}

Se ho già i dati, PersonViewModel lo otterrà dalla Persona e lo consegnerà alla vista.

Se l'utente scrivendo i dati, PersonViewModel lo otterrà per primo e lo passerà al modello Person.

Domande: Se devo verificare l'integrità delle stringhe provenienti dalla vista, dove dovrei farlo? (controllando che la stringa non sia vuota, che l'ID corrisponda a una certa espressione regolare, ecc.)

Questa è un'implementazione ottimale del pattern ora mi manca qualcosa?

    
posta AR89 26.03.2017 - 12:54
fonte

1 risposta

0

In base alle tue esigenze e alla logica aziendale.
Se per "integrità" si intende la logica di formattazione, questa logica deve essere presente nel viewmodel, poiché la responsabilità di viewmodel è "preparare" i dati per la vista. Lo stesso vale per input, viewmodel responsabile della "conversione" dei dati formattati dalla visualizzazione al formato "business logic".

Ma se è necessario verificare l'integrità in base a qualche "logica aziendale" (il nome deve essere univoco o id deve essere in un intervallo), questa convalida deve essere eseguita nel modello o almeno fornita a viewmodel come servizio

    
risposta data 26.03.2017 - 20:54
fonte

Leggi altre domande sui tag