Это пример кода, который не соответствует принципу единой ответственности,
public class EmailSender
{
public void SendEmail(string customerID,
string emailNotificationType)
{
//STEP1: load customer details
//STEP2: get email content
//STEP3: send email (using SmtpClient class)
}
public string GetEmailContent(Customer customer,
string emailNotificationType)
{
// Build the email notification content
}
}
Я согласен, это создаст проблему в случае, если мне нужно будет выполнить следующие действия,
-> Changes in the way, you are loading customer details.
-> Changes to the email content because of requirement enhancements / changes.
-> If there any change in the way you are sending the email instead of using SmtpClient class or something like that.
поэтому нам нужно применять принцип единой ответственности для разделения классов.Я полностью согласен с этим принципом.Скажем, мне нужно создать три класса, такие как
EmailSender - которые предназначены только для отправки электронной почты CustomerRepository - которые предназначены только для извлечения данных клиента EmailContentBuilder - которые анализируют содержимое электронной почты
Но скажите, если у меня естьДао, как CustomerDao, На данный момент все операции CRUD, связанные с CustomerDao, относятся к одному и тому же классу, как показано ниже
Класс CustomerDao
- add ()
- update () - get ()
- getAll ()
- update ()
Нужно ли здесь применять SingleResponsibilityPrinciple?Если да, то как подать заявку на класс CustomerDao?
Спасибо,
Гарри