在尝试遵循SOLID原则时,我的课程设计有多精细?

Xai*_*oft 6 oop solid-principles

我有一个名为IRegistrationService的客户端注册界面.这包含一个名为Register的方法,它通过类RegistrationService实现.如果我想要删除,更新,检索方法,我会为每个操作创建一个单独的接口,例如IDeletionService,IUpdateService,IRetrieveService,或者只是将所有方法放入IRegistrationService.我问这个的原因是因为这就是SOLID原则,特别是SRP原则似乎要问的问题.

Jac*_*son 2

表述单一职责原则的一种方式是,一个类应该只有一个改变的理由。这并不一定意味着它只做一件事,而是它只处理一个责任范围。

因此,您的注册服务可以了解有关人们注册的所有信息,我会在其中包括删除、更新、检索注册。如果注册过程发生变化(例如,您决定向所有新用户或更新的用户发送电子邮件),则班级会发生变化。然而,如何发送注册电子邮件的实现细节不属于该服务——这将是该类可能更改的第二个原因(例如,您意识到您想通过外部 SMTP 服务器而不是本地发送电子邮件,或者通过短信而不是电子邮件等)。

  • 大多数 SOLID 原则都非常具体,但 SRP 则有些主观。有能力的开发人员对于单一责任的构成,或者正如 JacobM 所说的,责任的“范围”的构成,可能有不同的看法。也就是说,根据您给出的 UserNotifications 示例,我相信您的理解是正确的。也许可以通过考虑明显违反 SRP 的方式来最好地解释 SRP:提供注册客户、计算抵押贷款利息以及通知他们是否延迟付款的方法的类将承担多重责任。 (2认同)