Il principio di responsabilità unica afferma che "una classe dovrebbe avere una ragione per il cambiamento".
Nel modello MVC, il lavoro del Controller consiste nel mediare tra la vista e il modello. Offre un'interfaccia per la vista per segnalare le azioni eseguite dall'utente sulla GUI (ad esempio consentendo alla vista di chiamare controller.specificButtonPressed()
), ed è in grado di chiamare i metodi appropriati sul modello per manipolarli o richiamarne le operazioni (ad es. model.doSomething()
).
Questo significa che:
- Il controller deve conoscere la GUI, al fine di offrire alla View un'interfaccia adatta a segnalare le azioni degli utenti.
- Inoltre, è necessario conoscere la logica del modello per poter richiamare i metodi appropriati sul modello.
Ciò significa che ha due motivi per cambiare : una modifica nella GUI e una modifica nella logica aziendale.
Se la GUI cambia, ad es. viene aggiunto un nuovo pulsante, il controller potrebbe dover aggiungere un nuovo metodo per consentire alla vista di riportare un utente che preme su questo pulsante.
E se la logica di business nel Modello cambia, il Controller potrebbe dover cambiare per richiamare i metodi corretti sul Modello.
Pertanto, il controller ha due possibili motivi per cambiare . Rompe SRP?