Принцип єдиної відповідальності зазначає, що "клас повинен мати одну причину зміни".
У шаблоні MVC завданням контролера є посередництво між видом і моделлю. Він пропонує інтерфейс для представлення даних, щоб повідомляти про дії, здійснені користувачем на графічному інтерфейсі (наприклад, дозволити View зателефонувати controller.specificButtonPressed()
), а також може викликати відповідні методи в моделі, щоб маніпулювати своїми даними або викликати свої операції (наприклад model.doSomething()
) .
Це означає що:
- Контролер повинен знати про GUI, щоб запропонувати Перегляду підходящий інтерфейс для повідомлення про дії користувача.
- Він також повинен знати про логіку в Моделі, щоб мати можливість використовувати відповідні методи в моделі.
Це означає, що є дві причини зміни : зміна GUI та зміна логіки buisness.
Якщо GUI змінюється, наприклад, додається нова кнопка, Контролеру, можливо, потрібно буде додати новий метод, щоб дозволити Перегляд повідомляти користувача про натискання цієї кнопки.
І якщо бізнес-логіка в Моделі зміниться, Контролеру, можливо, доведеться змінитись, щоб викликати правильні методи в Моделі.
Тому у Контролера є дві можливі причини зміни . Це порушує SRP?