Errore nel controllo della domanda di progettazione (python e MVC)

0

Quale è meglio una prospettiva di design?

Un oggetto che viene inizializzato e poi controlla se i parametri passati sono validi prima di distruggere se stesso (quindi in __init__) o

Verifica se i parametri sono validi e quindi l'oggetto viene inizializzato?

Penso che la risposta sia quest'ultima. Comunque questo mi lascia con questa domanda. Quale classe possiede le funzioni primarie per verificare questo input? Sotto un design MVC, sarebbe nel controller, un'altra classe o come un metodo @static nella classe in questione

Fornirò un semplice esempio:

Diciamo che la classe B è valida quando x > 10 sotto un design MVC.

    class Controller():
        ...
        age = view.age()
        HumanObj = Human(age)
        Humanobj.is_Of_Age()
        # Delete obj
        ...

o

    class Controller() 
        ...
        age  = view.age()
        if age > 10:
            HumanObj = Human(age)
        ...

o

     class Controller()
         ...
         age= view.age()
         if Human.is_Of_Age(age):
             HumanObj = Human(age)
         ...

grazie

    
posta nimbus 10.10.2016 - 15:15
fonte

1 risposta

0

Credo che la tua domanda sia:

In un framework Model-View-Controller, dove va la logica aziendale ?

Se si utilizza un framework MVC rigido, vengono inseriti nel modello . Quindi, per esempio, la logica che "l'età di una persona non dovrebbe mai essere inferiore a 10" va nel modello. Questo perché se hai più endpoint che influenzano l'età di qualcuno, dovresti metterlo in più punti del tuo codice.

Detto questo, non voglio dire che la tutta logica vada nel modello. Ad esempio, verificare che hai ricevuto un numero intero e non un doppio da una richiesta POST andrebbe nel controller , poiché ciò non ha nulla a che fare con la logica aziendale .

Detto questo, è abbastanza comune per molti framework avere un quarto livello, un livello "Servizi" . In questo caso, i servizi contengono effettivamente la logica aziendale e il modello si occupa solo di archiviare / recuperare i dati dal database.

    
risposta data 10.10.2016 - 16:46
fonte

Leggi altre domande sui tag