Java में SOLID सिद्धांत: स्वच्छ कोड के लिए सिद्धांत और व्यवहार

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Java डेवलपर के लिए SOLID क्यों महत्वपूर्ण है



ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की दुनिया में, समय के साथ कोड का रखरखाव और विस्तार करना और अधिक जटिल हो जाता है। स्पष्ट आर्किटेक्चर के बिना, एक छोटा प्रोजेक्ट भी "गंदगी के बड़े ढेर" में बदल जाता है, जहाँ एक फंक्शन में बदलाव दस अन्य को तोड़ देता है। यहीं पर SOLID सिद्धांत काम आते हैं — रॉबर्ट मार्टिन (अंकल बॉब) द्वारा प्रतिपादित क्लास डिज़ाइन के पाँच मौलिक नियम।



Java डेवलपर के लिए, SOLID केवल सिद्धांत नहीं, बल्कि एक व्यावहारिक उपकरण है। Java, एक सख्ती से टाइप की गई भाषा के रूप में जिसमें इंटरफेस और इनहेरिटेंस की शक्तिशाली प्रणाली है, इन सिद्धांतों को लागू करने के लिए आदर्श है। इस लेख में, हम सिद्धांत के दृष्टिकोण से प्रत्येक सिद्धांत का विश्लेषण करेंगे और Java पर लाइव कोड उदाहरण दिखाएंगे जिन्हें आप तुरंत अपने प्रोजेक्ट में लागू कर सकते हैं।



1. Single Responsibility Principle (एकल उत्तरदायित्व का सिद्धांत)



सिद्धांत

SRP कहता है: एक क्लास में बदलाव का केवल एक ही कारण होना चाहिए। दूसरे शब्दों में, क्लास को एक, स्पष्ट रूप से परिभाषित कार्यक्षमता के लिए जिम्मेदार होना चाहिए। यदि क्लास बहुत अधिक काम करता है, तो उसका परीक्षण, संशोधन और पुन: उपयोग करना कठिन हो जाता है।



Java में व्यवहार

SRP के एक सामान्य उल्लंघन पर विचार करें — एक क्लास जो एक साथ उपयोगकर्ता डेटा का प्रबंधन करता है और सूचनाएँ भेजता है:



// ❌ SRP का उल्लंघनpublic class User {    private String name;    private String email;

public void saveToDatabase() { // डेटाबेस में सहेजना }

public void sendWelcomeEmail() { // ईमेल भेजना }}


सही समाधान जिम्मेदारी को दो क्लास में विभाजित करना है:



// ✅ SRP का पालनpublic class User {    private String name;    private String email;    // गेटर्स और सेटर्स}

public class UserRepository { public void save(User user) { // डेटाबेस में सहेजना }}

public class EmailService { public void sendWelcomeEmail(User user) { // ईमेल भेजना }}


निष्कर्ष: अब प्रत्येक क्लास में बदलाव का एक ही कारण है। User केवल डेटा संरचना में बदलाव पर बदलता है, UserRepository — डेटाबेस लॉजिक में बदलाव पर, EmailService — ईमेल टेम्पलेट में बदलाव पर।



2. Open-Closed Principle (खुले/बंद का सिद्धांत)



सिद्धांत

OCP कहता है: क्लास विस्तार के लिए खुले होने चाहिए, लेकिन संशोधन के लिए बंद होने चाहिए। इसका मतलब है कि नई कार्यक्षमता को इनहेरिटेंस या कम्पोज़ीशन के माध्यम से जोड़ा जाना चाहिए, पहले से परीक्षण किए गए कोड को छुए बिना।



Java में व्यवहार

कल्पना करें कि आपके पास विभिन्न प्रकार के ग्राहकों के लिए डिस्काउंट कैलकुलेटर है:



// ❌ OCP का उल्लंघनpublic class DiscountCalculator {    public double calculateDiscount(String customerType, double amount) {        if (customerType.equals("Regular")) {            return amount * 0.1;        } else if (customerType.equals("Premium")) {            return amount * 0.2;        }        return 0;    }}


नए प्रकार के ग्राहक (जैसे "Gold") को जोड़ने पर मौजूदा क्लास को बदलना होगा। समाधान पॉलीमॉर्फिज़्म का उपयोग करना है:



// ✅ OCP का पालनpublic interface DiscountStrategy {    double calculate(double amount);}

public class RegularDiscount implements DiscountStrategy { @Override public double calculate(double amount) { return amount * 0.1; }}

public class PremiumDiscount implements DiscountStrategy { @Override public double calculate(double amount) { return amount * 0.2; }}

public class DiscountCalculator { private DiscountStrategy strategy;

public DiscountCalculator(DiscountStrategy strategy) { this.strategy = strategy; }

public double calculate(double amount) {

ब्लॉग

पुस्तक अनुशंसाएँ