Принцип Единой Ответственности гласит, что «класс должен иметь одну причину изменения».
В паттерне MVC работа Контроллера заключается в том, чтобы быть посредником между представлением и моделью. Он предлагает интерфейс для представления отчетов о действиях, выполненных пользователем в графическом интерфейсе (например, позволяя представлению вызывать controller.specificButtonPressed()
), и способен вызывать соответствующие методы в модели для манипулирования данными или вызова их операций (например, model.doSomething()
) ,
Это означает, что:
- Контроллер должен знать о графическом интерфейсе, чтобы предложить View подходящий интерфейс для отчета о действиях пользователя.
- Также необходимо знать логику в модели, чтобы иметь возможность вызывать соответствующие методы в модели.
Это означает, что у этого есть две причины для изменения : изменение в GUI и изменение в логике бизнеса.
Если изменяется графический интерфейс пользователя, например, добавляется новая кнопка, контроллеру может потребоваться добавить новый метод, чтобы позволить представлению сообщать о нажатии на эту кнопку пользователем.
И если бизнес-логика в модели изменится, возможно, придется изменить контроллер, чтобы вызвать правильные методы в модели.
Поэтому у контроллера есть две возможные причины для изменения . Это нарушает SRP?