【java】(软考)面向对象---责任链解析

目录

责任链的意义

手写笔记

​编辑


责任链的意义

当您把请求给出时,如果某对象不能实现您的操作,责任链会自动把您的请求传给它的下一级

从而避免请求的发送者和接受者之间的耦合关系

这里以2007年下半年试题七进行说明

题目描述

某企业的采购审批是分级进行的,即根据采购金额的不同由不司层次的主管人员来审批,主任可以审批5 万元以下(不包括 5 万元)的采购单,副董事长可以审批5 万元至 10万元(不包括 10万元)的采购单,董事长可以审批 10 万元至 50 万元(不包括 50 万元)的采购单,50 万元及以上的采购单就需要开会讨论决定

手写笔记及解析

代码 

import java.util.Scanner;class PurchaseRequest{Double Amount;int Number;String purpose;
}
class Approver{private Approver successor;public Approver(){successor = null;}public void SetSuccessor(Approver aSuccessor){successor = aSuccessor;}public void ProcessRequest(PurchaseRequest aRequest){if(successor != null){successor.ProcessRequest(aRequest);}}
}class Director extends Approver{public void ProcessRequest(PurchaseRequest aRequest){if(aRequest.Amount<=50000){System.out.println("主任审批通过啦~");}else{super.ProcessRequest(aRequest);}}
}
class VicePresident extends Approver{public void ProcessRequest(PurchaseRequest aRequest){if(aRequest.Amount<=100000){System.out.println("副董审批通过啦~");}else{super.ProcessRequest(aRequest);}}
}
class President extends Approver{public void ProcessRequest(PurchaseRequest aRequest){if(aRequest.Amount<=500000){System.out.println("董事审批通过啦~");}else{super.ProcessRequest(aRequest);//子类不需要再次声明类型}}
}
class Congress extends Approver{public void ProcessRequest(PurchaseRequest aRequest){if(aRequest.Amount>=500000){System.out.println("例会审批通过啦~");}else{super.ProcessRequest(aRequest);}}
}
public class RS {public static void main(String[] args) {Congress Meeting = new Congress();Director Jimmy = new Director();VicePresident Mike = new VicePresident();President Maggie = new President();PurchaseRequest aRequest = new PurchaseRequest();//    构造责任链Meeting.SetSuccessor(null);Jimmy.SetSuccessor(Mike);Mike.SetSuccessor(Maggie);Maggie.SetSuccessor(Meeting);Scanner input = new Scanner(System.in);aRequest.Amount = input.nextDouble();Jimmy.ProcessRequest(aRequest);}
}

今天的分享到这里就结束啦~希望能帮到您!!

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

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

相关文章

【声呐仿真】学习记录1-配置dave、uuv_simulator

【声呐仿真】学习记录1-配置dave、uuv_simulator 1.介绍2.配置3.一些场景 1.介绍 家|DAVE项目 — Home | Project DAVE 2.配置 参考官方教程安装|DAVE项目 — Installation | Project DAVE mkdir -p ~/uuv_ws/src cd ~/uuv_ws/src git clone https://github.com/Field-Robot…

第7章 Kafka-Kraft模式【Kafka】

第7章 Kafka-Kraft模式【Kafka】 前言推荐第7章 Kafka-Kraft模式7.1 Kafka-Kraft架构7.2 Kafka-Kraft集群部署7.3 Kafka-Kraft集群启动停止脚本 最后 前言 2024-3-27 22:46:07 本文是根据尚硅谷学习所做笔记 仅供学习交流使用&#xff0c;转载注明出处 推荐 【尚硅谷】Kaf…

【漏洞复现】WordPress_Wholesale_Market admin-ajax.php 任意文件读取漏洞

0x01 产品简介 WordPress Wholesale Market是一个WordPress主题,专门设计用于创建批发市场和在线商城网站。该主题提供了许多功能和设计元素,使您能够轻松地构建一个功能强大的批发市场平台,以满足批发商和零售商的需求。 0x02 漏洞概述 WordPress Wholesale Market存在任…

vue快速入门(三十五)组件通信-父传子

注释很详细&#xff0c;直接上代码 上一篇 新增内容 父组件传值子组件接收父组件传来的数据 源码 App.vue <template><div id"app"><!-- :item"item"为将item的值传递给MyTest组件 --><MyTest v-for"item in roles" :key&q…

【LAMMPS学习】八、基础知识(3.6)计算热导率

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

【介绍下WebStorm开发插件】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

第62天:服务攻防-框架安全CVE 复现SpringStrutsLaravelThinkPHP

目录 思维导图 常见语言开发框架&#xff1a; 案例一&#xff1a;PHP-开发框架安全-Thinkphp&Laravel Thinkphp3.2.x日志泄露 自动化脚本检测 如何getshell 手工注入 ​ThinkPHP5 5.0.23 手工注入 工具检测 laravel-cve_2021_3129 案例二&#xff1a;JAVAWEB-开…

iOS 64位程序调试环境搭建

一、背景 调试ios程序经常使用gdb&#xff0c;但是gdb还未支持arm64&#xff0c;需要使用XCode的lldb调试IOS下64位程序。因为xcode默认调试工具是lldb&#xff0c;开始各种尝试在xcode中使用Debug-》Attach to Process 直接attach进程&#xff0c;但是只能看见进程却无法挂接。…

使用Android studio,安卓手机编译安装yolov8部署ncnn,频繁出现编译错误

从编译开始就开始出现错误&#xff0c;解决步骤&#xff1a; 1.降低graddle版本&#xff0c;7.2-bin --->>> 降低为 6.1.1-all #distributionUrlhttps\://services.gradle.org/distributions/gradle-7.2-bin.zip distributionUrlhttps\://services.gradle.org/di…

OpenHarmony 蓝牙相关API用法

介绍 本示例通过使用蓝牙低功耗心率服务&#xff0c;展示蓝牙相关API用法。实现了以下几点功能&#xff1a; 发现具有特定服务的设备。连接到设备。发现服务。发现服务的特征、如何读取给定特征的值、为特征设置通知等。 相关概念 BLE扫描&#xff1a;通过BLE扫描接口实现对…

【Java框架】Spring框架(三)——Spring整合Mybatis及Spring声明式事务

目录 回顾Mybatis和新对象思路整理 Spring和MyBatis的整合步骤1. 创建Web工程&#xff0c;导入Spring和MyBatis的相关依赖2. 建立开发目录结构&#xff0c;创建实体类3. 创建数据访问接口和SQL映射语句文件4. 使用Spring配置文件配置数据源4.1 database.properties4.2spring配置…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(2)——架构分析 - 核心思想环境搭建技术选型

4.架构分析 4.1.核心思想 超越一阶提示&#xff0c;通过增加静态知识库和信息检索方案或简单的总结方案来扩展语言模型。 将这些想法扩展到构建一个代理架构&#xff0c;该架构处理检索&#xff0c;其中过去的经验在每个时步动态更新&#xff0c;并混合与npc当前上下文和计划…