1
我有下列層的Web應用程序:瞭解SRP原則與nlayers
- 查看
- 業務
- 實體
- 庫
我想送一當用戶註冊時向用戶發送電子郵件。
我有類User,Entities層以及業務層中的UserBussines和MailBusiness類。
問題是我不知道將電子郵件發送到用戶的正確位置。
我看到一些選項
1)控制器:
UserBusiness.AddUser();
MailBusiness.SendEmail();
2)在商家
UserBusiness.AddUserAndSendEmail()
{
AddUser();
MailBusiness.SendEmail();
}
在兩個選擇我認爲我沒有履行SRP採用SOLID原則,因爲我在一種方法中承擔了兩項責任。
我不理解原理?或者我做錯了什麼?
所以,你告訴我,我必須把它放在用戶業務邏輯?或者我必須創建另一個班級?我認爲我可以使用UserBusiness類作爲應用程序服務。 但是,dosen't RegisterUser有兩個resonsabilities?添加用戶在數據庫併發送電子郵件?它打破了SRP原則?或者我沒有失去某種東西? –
@AlbertCortada如果你已經有類名的約定,那麼保持它爲'UserBusiness',但不要將方法命名爲'AddUserAndSendEmail',因爲它說明如何實現方法而不是使用什麼方法。將其命名爲'RegisterUser' - 那個方法真的有什麼 –
@AlbertCortada關於責任 - 你的方法有單一責任 - 執行用戶註冊場景。考慮你正在添加日誌記錄。你會命名這個方法'AddUserIfNotExistsAndSendEmailAndLogResults'嗎?類可以協調其他類的工作 –