O Princípio da Responsabilidade Única declara que "uma classe deve ter um motivo para a mudança".
No padrão MVC, o trabalho do Controlador é mediar entre a Visualização e o Modelo. Ele oferece uma interface para o View relatar ações feitas pelo usuário na GUI (por exemplo, permitindo que o View chame controller.specificButtonPressed()
) e pode chamar os métodos apropriados no Modelo para manipular seus dados ou invocar suas operações (por exemplo model.doSomething()
) .
Isso significa que:
- O Controller precisa conhecer a GUI, a fim de oferecer ao View uma interface adequada para relatar ações do usuário.
- Ele também precisa conhecer a lógica do Modelo, para poder invocar os métodos apropriados no Modelo.
Isso significa que há duas razões para mudar : uma alteração na GUI e uma alteração na lógica de negócios.
Se a GUI mudar, por exemplo, um novo botão for adicionado, o Controlador poderá precisar adicionar um novo método para permitir que a View relate um usuário pressionando esse botão.
E se a lógica de negócios no Modelo mudar, o Controlador poderá ter que mudar para invocar os métodos corretos no Modelo.
Portanto, o controlador tem dois motivos possíveis para mudar . Isso quebra o SRP?