"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > سلسلة المسؤولية

سلسلة المسؤولية

تم النشر بتاريخ 2024-11-08
تصفح:663

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

النقاط الرئيسية

  • يتبع LSP (مبدأ استبدال ليسكوف، أي نمط التصميم الصلب).
  • يتبع برنامج SRP ذو المبدأ الراسخ.
  • يتبع OCP مبدأً قويًا حيث يمكننا إضافة المزيد من أدوات قطع الأشجار مثل التتبع والقاتل وما إلى ذلك دون تعديل التعليمات البرمجية الموجودة على الإطلاق.
  • يتبع مزود خدمة الإنترنت أيضًا.
بيان الافراج تم نشر هذه المقالة على: https://dev.to/prashantrmishra/chain-of-responsibility-43a4?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3