我希望我能弄清楚我正在努力解决的问题:-) 来了。我想知道如何在以下情况下实施 SRP:
有一个项目。完成后,必须向联系人邮寄一份调查问卷,他在其中就项目的进展情况提供反馈。
该软件具有项目级。有一个循环遍历所有项目的过程。我已将所有用于邮寄的代码拆分到一个名为 ContactMailer 的类中,该类将项目作为参数,类似于 ContactMailer.AttemptMail(project);
但是在某些情况下不发送邮件:项目标记为 DoNotSurvey,或标记为 Challenged(= 有人质疑不应发送邮件,管理员必须对此做出决定),如果没有此类项目的有效调查。
我的问题是:这个检查可能在 CheckMailConditions 之类的过程中,但是这个过程属于哪里?它应该在 de ContactMailer 中吗?这感觉有点不对劲,尽管它是检查是否应该发送邮件。或者它应该是一个单独的类?这听起来像 SRP(一个有一个职责的类:检查条件),但这会导致一个类使用一种方法,这似乎有点过头了。
或者我是否应该在调用 ContactMailer.AttemptMail 之前检查这些条件,因为它们是项目的属性?我有点迷路了。
提前感谢您的想法!