Ниже приведены ответы на ваш вопрос
В] Если я использую один и тот же класс для getAllUsers и getFilteredByAge, это означает, что у моего класса есть две обязанности?
A] Нет, поскольку работа вашего класса состоит в том, чтобы привлекать пользователей, скорее, эти функции должны быть перегружены и не должны быть в разных классах.
Q] он отвечает за получение пользователей, а также за их фильтрацию. Я прав или нет?
A] Полагаю, нет! Фильтрация - это не отдельная задача, она должна применяться перед извлечением объектов.
В] Как работает принцип единой ответственности в этом примере, следует ли мне разделить эти три на разные классы, или есть какой-то лучший способ?
A]
В этом случае я предлагаю вам иметь только один класс, который должен иметь следующие перегрузки функций
- GetUsers () - получить всех пользователей
- GetUsers (AgeFilter) - получить пользователей по возрасту
- GetUsers (AgeFilter, sexFilter) - получить пользователей по возрастным фильтрам и
гендерный фильтр
Примечание: Теперь предположим, что в будущем вы захотите добавить больше функций в этот класс
например, рассчитать зарплату для пользователя или добавить сведения о семье для пользователей
тогда в таком случае вы можете пойти на создание другого класса вместо того, чтобы обременять один класс ...