Tra i tanti Design Patterns disponibili, l'MVC è sicuramente quello che ha avuto più popolarità .
Per chi non ha familiarità con questo concetto, ecco la descrizione direttamente da Wikipedia:
Il pattern è basato sulla separazione dei compiti fra i componenti software che interpretano tre ruoli principali:
- il model fornisce i metodi per accedere ai dati utili all'applicazione;
- il view visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti;
- il controller riceve i comandi dell'utente (in genere attraverso il view) e li attua modificando lo stato degli altri due componenti
Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "logica di business"), a carico del controller e del model, e l'interfaccia utente a carico del view.
Ora mi rivolgo a tutti gli sviluppatori (in particolare a quelli che si avvalgono di PHP, con la presenza o meno di Zend Framework): secondo voi questa metodologia di programmazione porta molti benefici nello sviluppo di un'applicazione web rispetto alle normali procedure di sviluppo?
A mio avviso sì, e parecchie. Io non implemento la versione "ufficiale" del Pattern MVC nelle mie applicazioni, ma una controparte da me personalizzata e adattata ai miei stili di programmazione (dopotutto, un Pattern pone una metodologia/soluzione, che può essere modificata a seconda dei casi). Devo dire che la separazione delle tre logiche porta ad una mantenibilità e ad una modularità davvero maggiore, favorendo una migliore gestione complessiva dell'applicazione.
Oltre al precedente quesito, vi chiedo inoltre: voi fate uso dei molti Design Patterns (in caso positivo, quali) nelle vostre applicazioni? Trovate che lo studio e l'apprendimento dei Design Patterns costiutuisca un valido motivo per produrre software o applicazioni maggiormente incentrati sulla nuova generazione (indipendentemente da linguaggio utilizzato)?