Я работаю над нижеследующими вариантами использования.
Теперь я могу спроектировать его двумя способами
Согласно SRP (принцип единой ответственности), как и в принципах SOLID, я чувствую, что у нас есть 3 обязанности, которые создают пользователя, удаляя пользователя и обновляя пользователя, и поэтому нам нужно 3 класса, как упомянуто выше в пункте 2.
Пожалуйста, предложите, какой должен быть хороший дизайн - Design # 1 или Design # 2.
Хорошо известна проблема определения ответственности. Роберт Мартин предлагает интерпретировать его так:
Принцип единой ответственности (SRP) гласит, что каждый программный модуль должен иметь одну и только одну причину изменения
а также (та же ссылка):
Когда вы пишете программный модуль, вы хотите убедиться, что при запросе изменений эти изменения могут происходить только от одного человека, или, скорее, от одной тесно связанной группы людей, представляющих единую узко определенную бизнес-функцию.
В вашем примере изменения бизнес-требований будут касаться не только самого пользователя, а не того, как его управляют с точки зрения деталей реализации. Важная точка зрения заключается в том, что ваше приложение делает для людей, использующих его, а не как оно это делает. Поэтому я также рекомендую первый подход. Обычно используемый шаблон для этого называется The Repository.