एक वर्ग के पास बदलने का केवल एक कारण होना चाहिए।
परिभाषा - इस संदर्भ में जिम्मेदारी को बदलने का एक कारण माना जाता है।
यह सिद्धांत बताता है कि यदि हमारे पास किसी वर्ग को बदलने के लिए 2 कारण हैं, तो हमें कार्यक्षमता को दो वर्गों में विभाजित करना होगा। प्रत्येक वर्ग केवल एक जिम्मेदारी संभालेगा और अगर भविष्य में हमें एक बदलाव करने की आवश्यकता है तो हम इसे उस वर्ग में करने जा रहे हैं जो इसे संभालता है। जब हमें अधिक जिम्मेदारियों वाले वर्ग में परिवर्तन करने की आवश्यकता होती है तो परिवर्तन कक्षा की अन्य जिम्मेदारी से संबंधित अन्य कार्यों को प्रभावित कर सकता है।
उदाहरण
एकल उत्तरदायित्व सिद्धांत से पहले कोड
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!"}) } } }
एकल उत्तरदायित्व सिद्धांत के बाद कोड
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!"); } } } }