Zasada jednolitej odpowiedzialności stwierdza, że „klasa powinna mieć jeden powód zmiany”.
We wzorze MVC zadaniem kontrolera jest mediacja między widokiem a modelem. Oferuje interfejs dla widoku do raportowania działań wykonanych przez użytkownika w GUI (np. Zezwalanie na widok do wywołania controller.specificButtonPressed()
) i jest w stanie wywoływać odpowiednie metody w modelu w celu manipulowania danymi lub wywoływania operacji (np. model.doSomething()
) .
To znaczy że:
- Kontroler musi wiedzieć o GUI, aby zaoferować View odpowiedni interfejs do zgłaszania działań użytkownika.
- Musi także wiedzieć o logice w Modelu, aby móc wywoływać odpowiednie metody w Modelu.
Oznacza to, że istnieją dwa powody do zmiany : zmiana GUI i zmiana logiki biznesowej.
Jeśli GUI ulegnie zmianie, np. Dodano nowy przycisk, Kontroler może potrzebować dodać nową metodę, aby umożliwić Widokowi zgłoszenie naciśnięcia tego przycisku przez użytkownika.
A jeśli logika biznesowa w Modelu ulegnie zmianie, Kontroler może ulec zmianie, aby wywołać prawidłowe metody w Modelu.
Dlatego Administrator ma dwa możliwe powody zmiany . Czy to łamie SRP?