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

ज़िम्मेदारी की शृंखला

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

Chain of responsibility

जैसा कि नाम से पता चलता है, जिम्मेदारी की एक श्रृंखला अनुरोधों को संभालने के लिए रिसीवर ऑब्जेक्ट की एक श्रृंखला बनाती है।
यह पैटर्न अनुरोध प्रकार के आधार पर अनुरोध के प्रेषक और रिसीवर को अलग करता है।
यह पैटर्न व्यवहार पैटर्न के अंतर्गत आता है।

इस पैटर्न में अनुरोध के प्रत्येक रिसीवर ऑब्जेक्ट में अगले ऑब्जेक्ट का संदर्भ होता है यदि वह अनुरोध को संभाल नहीं सकता है, तो अनुरोध श्रृंखला में अगले रिसीवर को भेज दिया जाता है।

आइए इसे एक लॉगिंग तंत्र का उदाहरण लेकर समझते हैं जो संदेश के स्तर (अनुरोध) के आधार पर संदेशों को लॉग करता है

सार लॉगर

package Patterns.Behavioral.chainOfResponsibility;

public abstract class AbstractLogger{
    /**
     * TRACE 



कंक्रीटलॉगर्स

package Patterns.Behavioral.chainOfResponsibility;

public class DebugLogger extends AbstractLogger {
    private String className = this.getClass().getSimpleName();
    private String logger   = "DEBUG";
    public DebugLogger(){
        this.LEVEL = 1;
    }

    @Override
    void write(String message) {
        System.out.println(className ":" logger ":" message);
    }

}

package Patterns.Behavioral.chainOfResponsibility;

public class InfoLogger extends AbstractLogger {
    private String className = this.getClass().getSimpleName();
    private String logger   = "INFO";
    public InfoLogger(){
        this.LEVEL = 2;
    }

    @Override
    void write(String message) {
        System.out.println(className ":" logger ":" message);
    }

}
package Patterns.Behavioral.chainOfResponsibility;

public class ErrorLogger extends AbstractLogger {
    private String className = this.getClass().getSimpleName();
    private String logger   = "ERROR";
    public ErrorLogger(){
        this.LEVEL = 3;
    }

    @Override
    void write(String message) {
        System.out.println(className ":" logger ":" message);
    }

}

मुख्य

package Patterns.Behavioral.chainOfResponsibility;

public class Main {
    public static AbstractLogger intializeLoggers(){
        AbstractLogger errorLogger = new ErrorLogger(); //LEVEL = 3;
        AbstractLogger infoLogger = new InfoLogger(); //LEVEL = 2;
        AbstractLogger debugLogger = new DebugLogger(); // LEVEL = 1;
        errorLogger.setNextLogger(infoLogger);
        infoLogger.setNextLogger(debugLogger);
        return errorLogger;// return the highest priority Logger first


    }
    public static void main(String args[]){
        // initialize the chain of responsible objects
        AbstractLogger logger  = intializeLoggers();

        //pass the request down the responsibility chain
        //logging level 3 logger
        logger.logMessage(3, "log this error message");
        //loggin level 2 logger
        logger.logMessage(2, "info level log message");
        //logging level 1 logger
        logger.logMessage(1, "debug level log message");
    }
}

आउटपुट:

ErrorLogger:ERROR:log this error message
InfoLogger:INFO:info level log message
DebugLogger:DEBUG:debug level log message

प्रमुख बिंदु

  • एलएसपी (लिस्कोव प्रतिस्थापन सिद्धांत यानी ठोस डिजाइन पैटर्न) का पालन करता है।
  • ठोस सिद्धांत के एसआरपी का पालन करता है।
  • ठोस सिद्धांत के ओसीपी का पालन करता है क्योंकि हम मौजूदा कोड को बिल्कुल भी संशोधित किए बिना ट्रेस, घातक इत्यादि जैसे अधिक लॉगर्स जोड़ सकते हैं।
  • आईएसपी को भी फॉलो करता है।
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/prashantrmishra/चेन-ऑफ-रेस्पॉन्सिबिलिटी-43ए4?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3