Il principio di responsabilità singola afferma che "una classe dovrebbe avere una ragione per cambiare".
Nel modello MVC, il compito del controller è quello di 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 manipolare i suoi dati o invocare le sue operazioni (ad es. model.doSomething()
) .
Ciò significa che:
- Il controller deve conoscere la GUI, al fine di offrire alla View un'interfaccia adatta per segnalare le azioni dell'utente.
- Deve inoltre conoscere la logica del Modello, al fine di poter invocare i metodi appropriati sul Modello.
Ciò significa che ha due motivi per cambiare : un cambiamento nella GUI e un cambiamento 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 segnalare a un utente di premere questo pulsante.
E se la logica aziendale nel Modello cambia, il Controller potrebbe dover cambiare per invocare i metodi corretti sul Modello.
Pertanto, il controller ha due possibili ragioni per cambiare . Rompe SRP?