第六十六节 Java设计模式 -责任链模式

Java设计模式 -责任链模式

责任链模式为请求创建一个接收者对象列表。

这种模式是行为模式。

当使用责任链模式时,通常每个接收器包含对另一个接收器的引用。

如果一个对象不能处理请求,则它将相同的对象传递给下一个接收者,等等。

例子

abstract class Logger {protected Logger nextLogger;public void setNextLogger(Logger nextLogger){this.nextLogger = nextLogger;}public void logMessage(String message){log(message);if(nextLogger !=null){nextLogger.logMessage(message);}}abstract protected void log(String message);  
}
class ConsoleLogger extends Logger {public ConsoleLogger(){}@Overrideprotected void log(String message) {    System.out.println("Console::Logger: " + message);}
}
class EMailLogger extends Logger {public EMailLogger(){}@Overrideprotected void log(String message) {    System.out.println("EMail::Logger: " + message);}
}
class FileLogger extends Logger {public FileLogger(){}@Overrideprotected void log(String message) {    System.out.println("File::Logger: " + message);}
}
public class Main {  private static Logger getChainOfLoggers(){Logger emailLogger = new EMailLogger();Logger fileLogger = new FileLogger();Logger consoleLogger = new ConsoleLogger();emailLogger.setNextLogger(fileLogger);fileLogger.setNextLogger(consoleLogger);return emailLogger;  }public static void main(String[] args) {Logger loggerChain = getChainOfLoggers();loggerChain.logMessage("Null pointer");loggerChain.logMessage("Array Index Out of Bound");loggerChain.logMessage("Illegal Parameters");}
}

上面的代码生成以下结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面向对象-常用类(System类)

常用类-System类 Java程序的运行平台 1、 System类提供了一些静态属性和方法,允许通过类名直接调用。 2、 System类提供了代表标准输入、标准输出、错误输出的类属性。 3、 System类提供了一些静态方法用于访问环境变量、系统属性的方法。 1 System类属性 static P…

删除edge浏览器文本框储存记录值以及关闭自动填充

当我们点击输入框时总会出现许多以前输入过的信息。 一、删除edge浏览器文本框储存记录值 1、首先按下↓键选中你想删除的信息 二、关闭自动填充。 1、在地址栏输入edge://wallet/settings跳转到以下界面 2、往下滑找到 全部取消即可

你也许不知道,自己可能是一个热人

今天想跟大家分享的,是一种很少有人了解的人格特质。它非常普遍,许多人都或多或少有一些倾向,但却很少有人意识到它。 不妨看一看,你有没有下面这些特征: 有着极其旺盛的求知欲,对许多奇奇怪怪的问题都有着…

螺旋矩阵-力扣

由于是先刷的螺旋矩阵Ⅱ,在做这道题时,套用了之前的代码,但发现有些问题,这里矩阵并不是n x n的矩阵,而是一个n x m的矩阵,在使用层1,层2这样来进行添加时,有些元素会添加不到&#…

nvm安装教程及使用nvm管理多个node版本

文章目录 前言一、nvm 安装教程温馨提示macOS/LinuxWindows 二、安装 node 前言 工作中,你可能会遇到以下场景: 我想使用 pnpm 命令安装依赖,但是在使用 pnpm 命令时提示如下 $ pnpm -v ERROR: This version of pnpm requires at least No…

捷报!恒瑞医药ADC创新药SHR-A1921卵巢癌适应症拟纳入突破性治疗品种公示

近日,恒瑞医药自主研发的TROP-2抗体偶联药物(antibody-drug-conjugate, ADC)注射用SHR-A1921用于治疗铂耐药复发上皮性卵巢癌、输卵管癌或原发性腹膜癌适应症被国家药品监督管理局药品审评中心拟纳入突破性治疗品种公示名单。今年3月&#xf…

第五天 从零开始构建基于Kubernetes的DevOps平台

基于Kubernetes的DevOps平台实践 持续集成工具: JenkinsgitlabciTekton 本章基于k8s集群部署gitlab、sonarQube、Jenkins等工具,并把上述工具集成到Jenkins中,以Django项目和SpringBoot项目为例,通过多分支流水线及Jenkinsfile…

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展,制造执行系统(MES)成为了智能制造的核心。今天,将为大家介绍一款开源的MES系统——MES管…

本周 MoonBit 核心库进行 API 整理工作、工具链持续完善

MoonBit更新 【核心库 Breaking】核心库进行API整理工作 所有immutable数据结构被放在immut路径下,如immutable_hashmap.Map变为immut/hashmap.Map // Before let a : immutable_hashmap.Map[Int, Int] immutable_hashmap.make() // After let a : immut/hashma…

我的创作纪念日——我与CSDN一起走过的128天

目录 一、机缘:旅程的开始 二、收获:沿路的花朵 三、日常:不断前行中 四、成就:一点小确幸 五、憧憬:梦中的重点 一、机缘:旅程的开始 最开始开始写博客是在今年一二月份的时候,也就是寒假…

SpringBootTest测试框架三

feign调用mock 注入feign调用的拦截器,自定义InvocationHandlerFactory,重写代理类的实现。 @Beanpublic Feign.Builder feignBuilder() {return Feign.builder().invocationHandlerFactory((target, dispatch) -> new FeignResultInvocationHandler(target, dispatch));}…

如何自学制作电子画册,这个秘籍收藏好

随着数字技术的飞速发展,电子画册作为一种新兴的媒体展示形式,以其独特的魅力和丰富的表现手法,受到了越来越多人的喜爱。那么,如何自学制作电子画册呢? 1. 学习基础知识 首先,你需要了解电子画册的基本构…

SAP SCU0 比较两个环境之间的SPRO配置差异

TCODE : SCU0 直接选择所有 因为对比全部,所以会有点久,慢慢等着,吃个橘子 输入正式环境的账号密码

YonBuilder移动开发基础教程——云修复

1 使用场景 在项目开发中,我们经常会遇到一种场景,对于一些已经上架应用市场对外发布的应用,我们需要修改其中部分页面的部分内容样式或功能逻辑,通常的做法是我们修改后,重新编译一个新的版本,然后提交应…

OrangePi Kunpeng Pro 开发板测评及Python开发实测

一、背景 首先感谢 创新乐知通过CSDN 邀请本人,参与这次 评测活动。这块开发板是香橙派联合华为精心打造,具有超强算力的鲲鹏开发板。本人使用最多的还是树莓派系列的板子,国产板子特别是华为为核心的板子还是头一次使用,特别感兴…

BurpSuite详细安装配置教程

环境条件:windows7或者windows10虚拟机 一、BurpSuite安装与配置 1、BurpSuite简介 BurpSuite(简称Burp)是基于Java开发的Web安全领域的集成工具,被称为信息安全界的瑞士军 刀,它包含Proxy、Intruder、Repeater、Decoder、Comparer等多个…

day 4:2028. 找出缺失的观测数据

Leetcode 2028. 找出缺失的观测数据 现有一份 n m 次投掷单个** 六面** 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n m 次投掷数据的 平均值 。 给你一个长度为 m …

网络攻击攻击之-远程代码执行/RCE告警运营分析篇

在各种网络安全产品的告警中,远程代码执行是一种非常常见的告警。本文将从远程代码执行的定义,远程代码执行利用的流量数据包示例,远程代码执行的suricata规则,远程代码执行的告分析警研判,远程代码执行的处置建议等几个方面阐述如何通过IDS/NDR,态势感知等流量平台的远程…

群狼调研(长沙品牌推广测试)开展广告效果测评

本文由群狼调研(长沙员工满意度调查)出品,欢迎转载,请注明出处。广告效果测评是对广告活动进行评估和分析的过程,旨在了解广告对目标受众的影响和效果。以下是广告效果测评通常涉及的内容: 1.知晓度和曝光度…

c# 解决窗体关闭时出现“访问已释放句柄“的异常

c# 解决窗体关闭时出现“访问已释放句柄“的异常 while (!this.button_search.IsHandleCreated)//主窗口的日志 { //解决窗体关闭时出现“访问已释放句柄“的异常 if (this.button_search.Disposing || …