Ho visto un sacco di cose che descrivono come è fatto, ma non molto che dice WHY è fatto. È solo un modo per mantenere leggibile il codice o esiste una ragione migliore?
Ho visto un sacco di cose che descrivono come è fatto, ma non molto che dice WHY è fatto. È solo un modo per mantenere leggibile il codice o esiste una ragione migliore?
Riguarda Separazione delle preoccupazioni . Fondamentalmente, vuoi che i tuoi componenti software facciano una cosa, e solo una cosa. Se i componenti iniziano a fare più di una cosa, il codice diventa difficile da leggere, le cose diventano più complicate di quanto debbano essere - in pratica un'app si trasforma in un grande piatto di Spagetti Code.
I Modelli contengono la logica aziendale, rappresentano le cose nella tua applicazione. Le viste presentano i dati all'utente. I controllori decidono cosa fare con le varie azioni dell'utente. Quando ci si attiene a questo, il codice è facile da leggere perché le cose sono il più semplici possibile.
MVC è un modello popolare, ma non è l'unico là fuori. MVVM è anche popolare. Fintanto che separi le tue preoccupazioni, scegli qualsiasi architettura di design che ti si addice.
Lo scopo effettivo di MVC è separare le visualizzazioni dal controller e dal modello. In altre parole, è un modello di progettazione una struttura per mantenere separati display e dati per consentire a ciascuno di cambiare senza influenzare l'altro. Dicendolo, è usato principalmente per gli elementi della GUI. Quindi contiene essenzialmente tre cose. Il modello contiene ciò che viene spesso chiamato logica aziendale o tutti i dati e le informazioni manipolati dal sistema. Il La vista contiene gli oggetti che visualizzano i dati e il controller gestisce il interazione con l'utente e media tra il modello e la vista.
In molti moderni toolkit GUI, la vista e i controller sono in qualche modo correlati tra loro e quindi non possono essere completamente separati. Ad esempio, un pulsante è un controller ma deve essere visualizzato sullo schermo.
Questa è una grande domanda, non ho tempo per una risposta così grande, quindi cercherò di farla breve.
La ragione principale è come hai detto per mantenere il codice leggibile e gestibile. La separazione del modello, della vista e del controller di questi componenti principali aiuta a creare un codice più riutilizzabile che è più facile da capire perché ogni pezzo ha uno scopo ben preciso. Il modello che rappresenta gli oggetti oi dati all'interno del sistema e che contiene il codice per le azioni che possono essere eseguite su tali oggetti. La vista ovviamente incapsula il layout e il design che ti permette di visualizzare quei dati. E infine il controller che ti permette di navigare da una vista all'altra, azione da fare.
Se hai mai avuto a che fare con un grande sistema di codice che ha sposato tutti e tre insieme, avrai visto la tipica copia di grossi pezzi di codice ridondante che non era esattamente ciò che era necessario per il prossimo compito. Questi modelli sono costruiti in modo tale da renderli più generici rendendoli più riutilizzabili di quanto non fosse in linea. Questo è che non hai istruzioni SQL sparse per tutti gli script, invece è consolidato. Lo stesso vale per l'HTML che è sparso nel codice, molto indesiderabile e difficile da modificare e mantenere.
Spero che ti aiuti.
Ci sono anche altre cose che non ho visto menzionate qui. Sì, un modello di progettazione previene i problemi e le difficoltà del codice spaghetti . Non dovrai più gestire un pezzo di codice, avventurarti in centinaia o migliaia di righe per ottenere il codice che desideri. Ma ci sono anche altri motivi: dal momento che il tuo codice è diviso in più sezioni, le comunicazioni degli sviluppatori avranno un tempo più semplice, affrontando e quindi risolvendo un problema. Un modello di progettazione aiuta inoltre gli sviluppatori a programmare in base a DRY . Un esempio di ciò sono i layout in Laravel, che ti aiutano a non usare più volte lo stesso codice html. Assicurati di dare un'occhiata a questo link per maggiori informazioni: Design Patterns
Leggi altre domande sui tag mvc