在创建邮件程序和/或观察者时,您是根据模型还是根据他们的任务来组织邮件?
PictureMailer
PictureObserver
EventMailer
EventObserver
UserMailer
UserObserver
AdminMailer (Mails to be sent to admins)
AdminObserver
NotificationMailer
NotificationObserver
答案 0 :(得分:1)
我根据他们的任务组织他们。我更喜欢在更少,更大,更粗粒度的邮件上使用更多,小巧,细粒度的邮件。例如,我可能没有AdminMailer
,但是在管理员中发生了不同的事情的几个不同的邮件程序。通知也是如此 - 您可能有多个发送通知的用例,因此每个用户都有一个邮件程序。通常,人们可以将其视为每个功能的邮件程序。
至于观察员,这取决于他们的任务。如果我正在监控创建和修改用户的分析,我可能只有一个UserObserver
。一旦我需要第二个用户观察者,我就会将其重命名为UserAnalyticsObserver
。看一下当前的项目,我有四个观察者,其中只有一个是以模型命名的 - 大多数都以该特征命名。
我的理由是遵循单一责任原则,这实际上意味着一个班级应该有一个改变的理由。如果我在模型之后使用命名邮件程序/观察者,我最终会得到支持多个功能的类,因此有多种原因需要更改。