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