Как следует из названия, цепочка ответственности создает цепочку объектов-получателей для обработки запросов.
Этот шаблон разделяет отправителя и получателя запроса в зависимости от типа запроса.
Этот паттерн относится к поведенческому паттерну.
В этом шаблоне каждый объект-получатель запроса имеет ссылку на следующий объект, если он не может обработать запрос, запрос передается следующему получателю в цепочке.
Давайте разберемся в этом на примере механизма журналирования, который регистрирует сообщения в зависимости от уровня сообщения (запроса)
Абстрактный регистратор
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Ключевые моменты
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3