Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để thực hiện Nguyên tắc Trách nhiệm Đơn lẻ bằng C #?

Một lớp chỉ nên có một lý do để thay đổi.

Định nghĩa - Trong bối cảnh này, trách nhiệm được coi là một trong những lý do để thay đổi.

Nguyên tắc này nói rằng nếu chúng ta có 2 lý do để thay đổi một lớp, chúng ta phải chia chức năng thành hai lớp. Mỗi lớp sẽ chỉ xử lý một trách nhiệm và nếu trong tương lai chúng ta cần thực hiện một thay đổi, chúng ta sẽ thực hiện nó trong lớp xử lý nó. Khi chúng ta cần thực hiện thay đổi trong một lớp có nhiều trách nhiệm hơn, sự thay đổi có thể ảnh hưởng đến các chức năng khác liên quan đến trách nhiệm khác của lớp.

Ví dụ

Quy tắc trước nguyên tắc trách nhiệm duy nhất

using System;
using System.Net.Mail;
namespace SolidPrinciples.Single.Responsibility.Principle.Before {
   class Program{
      public static void SendInvite(string email,string firstName,string lastname){
         if(String.IsNullOrWhiteSpace(firstName)|| String.IsNullOrWhiteSpace(lastname)){
            throw new Exception("Name is not valid");
         }
         if (!email.Contains("@") || !email.Contains(".")){
            throw new Exception("Email is not Valid!");
         }
         SmtpClient client = new SmtpClient();
         client.Send(new MailMessage("[email protected]", email) { Subject="Please Join the Party!"})
      }
   }
}

Mã sau nguyên tắc trách nhiệm duy nhất

using System;
using System.Net.Mail;
namespace SolidPrinciples.Single.Responsibility.Principle.After{
   internal class Program{
      public static void SendInvite(string email, string firstName, string lastname){
         UserNameService.Validate(firstName, lastname);
         EmailService.validate(email);
         SmtpClient client = new SmtpClient();
         client.Send(new MailMessage("[email protected]", email) { Subject = "Please Join the Party!" });
      }
   }
   public static class UserNameService{
      public static void Validate(string firstname, string lastName){
         if (string.IsNullOrWhiteSpace(firstname) || string.IsNullOrWhiteSpace(lastName)){
            throw new Exception("Name is not valid");
         }
      }
   }
   public static class EmailService{
      public static void validate(string email){
         if (!email.Contains("@") || !email.Contains(".")){
            throw new Exception("Email is not Valid!");
         }
      }
   }
}