"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > इंटरफ़ेस पृथक्करण सिद्धांत

इंटरफ़ेस पृथक्करण सिद्धांत

2024-08-26 को प्रकाशित
ब्राउज़ करें:127

Interface Segregation Principle

किसी भी ग्राहक को उस विधि पर निर्भर रहने के लिए मजबूर नहीं किया जाना चाहिए जिसका वह उपयोग नहीं करता है

कार्यालय स्थान के उदाहरण पर विचार करें जहां विभिन्न आउटपुट डिवाइसों को वस्तुओं का उपयोग करके दर्शाया जाता है

इंटरफ़ेस पृथक्करण सिद्धांत से पहले:

आईमल्टीफ़ंक्शन इंटरफ़ेस

/**
 * @ImultiFunction interface has methods related to all output devices present in office space
 * for devices like Printer, Scanner, Fax machines, etc
*/
public interface IMultiFunction {
    public void print();
    public void getPrintSpoolDetails();
    public void scan();
    public void scanPhoto();
    public void fax();
    public void internetFax();
}

अब विभिन्न उपकरणों के लिए उपरोक्त सामान्य इंटरफ़ेस लागू कर रहा है

XeroxWorkCenter क्लास जिसमें सभी क्षमताएं हैं

/**
 * 
 * You must have seen Xerox work station device which has all the features in one like printing, scanning, xerox,
 * fax etc
*/
public class XeroxWorkCenter implements IMultiFunction {

    @Override
    public void print() {
        // real printing code
    }

    @Override
    public void getPrintSpoolDetails() {
        // real get print spool details code
    }

    @Override
    public void scan() {
        // read scanning code
    }

    @Override
    public void scanPhoto() {
        // real scan photo code 
    }

    @Override
    public void fax() {
        // real fax code
    }

    @Override
    public void internetFax() {
        // real internet fax code
    }

}

HpPrinterNScanner क्लास में प्रिंटिंग और स्कैनिंग क्षमताएं हैं

public class HpPrinterNScanner implements IMultiFunction {

    @Override
    public void print() {
        // real printing code
    }

    @Override
    public void getPrintSpoolDetails() {
        // real get print spool details code
    }

    @Override
    public void scan() {
        // read scanning code
    }

    @Override
    public void scanPhoto() {
        // real scan photo code 
    }

    //Since HpPrinterNScanner has only printing and scanning abilities fax() and internetFax() will have empty body
    @Override
    public void fax() {}

    @Override
    public void internetFax() {}

}

कैननप्रिंटर क्लास में केवल मुद्रण क्षमता है

public class CanonPrinter implements IMultiFunction {

    @Override
    public void print() {
        // real printing code
    }

    @Override
    public void getPrintSpoolDetails() {
        // real get print spool details code
    }

    //Since the CanonPrinter has only printing ability rest of the method will have an empty body
    @Override
    public void scan() {}

    @Override
    public void scanPhoto() {}

    @Override
    public void fax() {}

    @Override
    public void internetFax() {}

}

आईएसपी के उल्लंघन की पहचान करने की तकनीक

  • मोटे इंटरफेस (दो कई विधि घोषणाओं वाले इंटरफेस)
  • कम सामंजस्य वाले इंटरफेस (ऐसे तरीके वाले इंटरफेस जिनके एक-दूसरे से संबंधित होने की संभावना नहीं है)
  • *खाली तरीकों का कार्यान्वयन *(जब कक्षाओं को उन तरीकों को लागू करने के लिए मजबूर किया जाता है जिनका वे उपयोग नहीं करते हैं, तो वे तरीकों के कार्यान्वयन को खाली शरीर के साथ छोड़ देते हैं)

इंटरफ़ेस पृथक्करण सिद्धांत के बाद:

public interface IPrint {
    public void print();
    public void getPrintSpoolDetails();
}
public interface IScan {
    public void scan();
    public void scanPhoto();
}
public interface IFax {
    public void fax();
    public void internetFax();
}
/**
 * 
 * You must have seen the Xerox workstation device which has all the features in one like printing, scanning, xerox, fax, etc.
*/
public class XeroxWorkCenter implements IPrint,IScan,IFax {

    @Override
    public void print() {
        // real printing code
    }

    @Override
    public void getPrintSpoolDetails() {
        // real get print spool details code
    }

    @Override
    public void scan() {
        // read scanning code
    }

    @Override
    public void scanPhoto() {
        // real scan photo code ̰
    }

    @Override
    public void fax() {
        // real fax code
    }

    @Override
    public void internetFax() {
        // real internet fax code
    }

}
public class HpPrinterNScanner implements IPrint,IScan {

    @Override
    public void print() {
        // real printing code
    }

    @Override
    public void getPrintSpoolDetails() {
        // real get print spool details code
    }

    @Override
    public void scan() {
        // read scanning code
    }

    @Override
    public void scanPhoto() {
        // real scan photo code 
    }
}
public class CanonPrinter implements IPrint {

    @Override
    public void print() {
        // real printing code
    }

    @Override
    public void getPrintSpoolDetails() {
        // real get print spool details code
    } 
}

प्रत्येक इंटरफ़ेस की एक ही ज़िम्मेदारी है और अब यह बहुत साफ़ है।

आईएसपी का अन्य ठोस सिद्धांतों के साथ संबंध

एकल जिम्मेदारी
इंटरफेस को अलग-अलग इंटरफेस में अलग करने के बाद, अब आईप्रिंट, आईस्कैन जैसे सभी इंटरफेस की एक ही जिम्मेदारी है

लिस्कोव प्रतिस्थापन
पृथक्करण के कारण अब सभी वर्ग (इंटरफ़ेस को लागू करना) लिस्कोव प्रतिस्थापन का पालन करते हैं, क्योंकि सभी उपप्रकार या कार्यान्वयन वर्गों को उनके इंटरफ़ेस संदर्भ चर के साथ प्रतिस्थापित किया जा सकता है

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/prashantrmishra/interface-segregadation-principle-4e97?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3