Ответственность касается пользователей, использующих систему, спросите себя: «Если бы пользователь хотел, чтобы это было изменено», на что еще это должно повлиять, а на что еще это повлияет.
Например, если бы у меня был объект «Студент» с методом «Добавить курс» и методом «Сохранить»,
Добавление нового курса студенту не должно влиять на то, как сохраняются данные студента, но если я изменил метод «Добавить курс», мне пришлось бы перекомпилировать и повторно развернуть все, что касается сохранения студента, давайте постулируем, что реализовано как база данных.
Еще хуже, если бы я хотел развернуть базу данных отдельно для структуры данных ученика, или сохранить ученика в базе данных другого типа, или, возможно, в файлах конфигурации. Эти две вещи теперь связаны и стали жесткими.
На пользователей, которым небезразлична база данных, влияют пользователи, которым небезразличен студент.
Поэтому лучше всего, если вы хотите определить, несет ли класс определенную ответственность, - это спросить, что будет затронуто, если вы вызовете его метод.
Многие классы, которые несут только одну ответственность, также будут иметь только один метод, но другие не будут, это определенно не является требованием.
источники:
Object Mentor
Видео по Clean Coder, эпизод. 9
person
Sam Fare
schedule
16.07.2014