我有一个包含以下图层的Web应用程序:
我想在用户注册时向用户发送电子邮件。
我在Entities图层中有User类,在Business层中有UserBussines和MailBusiness类。
问题是我不知道将电子邮件发送给用户的位置是正确的。
我看到了一些选项
1)在控制器中:
UserBusiness.AddUser();
MailBusiness.SendEmail();
2)在业务中
UserBusiness.AddUserAndSendEmail()
{
AddUser();
MailBusiness.SendEmail();
}
在这两个选项中,我认为我没有按照SOLID原则履行SRP,因为我在一种方法中承担了两项责任。
我不理解这个原则?或者我做错了什么?
答案 0 :(得分:0)
您有用户注册方案:
Given not registered user
When user registers
Then user becomes registered
And greeting mail is sent
此业务情景应存在于您的业务逻辑层中,因为:
因此,您应该拥有一些应用程序服务(例如UserService
),它将充当用户存储库和电子邮件服务的协调者:
public void RegisterUser(User user)
{
// possibly you should also check that user is not registered yet
_userRepository.Add(user);
_emailService.SendGreeting(user);
}