(1)职责模式编程要求:为了促进广东海洋大学教学质量的提升,学校加大了教学经费的投入,各归口职能部门,如教务处、校团委等都通过二次分配划拨了相应经费到学院支持教学改革、学生创新创业等。为了规范财务报销,财务处于2022年1月发布了相关资金审批权限简表,其中规定如下表。学校一级专项预算经费和校外专项经费进行二次分配到单位(学院)/项目的经费5万元以下单位(学院)负责人审批5-10万元以下归口职能部门负责人审批10-50万元以下分管校领导审批50万元以上主管财务校领导审批A)画出经费报销审批的流程;B)利用职责编程对上述场景进行实现;(2)另外列举一个生活中可以用到职责模式的场景,并简述指责模式的优缺点。

时间: 2023-06-27 12:01:22 浏览: 44
A)经费报销审批流程: 1. 财务处将经费申请单提交给单位(学院)/项目的负责人; 2. 如果经费申请金额在5万元以下,单位(学院)/项目的负责人进行审批并签字确认; 3. 如果经费申请金额在5-10万元之间,负责人将申请单交给归口职能部门负责人审批并签字确认; 4. 如果经费申请金额在10-50万元之间,归口职能部门负责人将申请单交给分管校领导审批并签字确认; 5. 如果经费申请金额在50万元以上,分管校领导将申请单交给主管财务校领导审批并签字确认。 B)职责编程实现: ``` // 定义审批者接口 interface Approver { void approve(FundingRequest fundingRequest); } // 定义负责人类 class UnitLeader implements Approver { private String name; public UnitLeader(String name) { this.name = name; } public void approve(FundingRequest fundingRequest) { if (fundingRequest.getAmount() < 50000) { System.out.println(name + "审批通过。"); } else { System.out.println("金额超过" + 50000 + "元,无法审批。"); } } } // 定义归口职能部门负责人类 class DepartmentLeader implements Approver { private String name; public DepartmentLeader(String name) { this.name = name; } public void approve(FundingRequest fundingRequest) { if (fundingRequest.getAmount() >= 50000 && fundingRequest.getAmount() < 100000) { System.out.println(name + "审批通过。"); } else { System.out.println("金额超过" + 100000 + "元,无法审批。"); } } } // 定义分管校领导类 class SchoolLeader implements Approver { private String name; public SchoolLeader(String name) { this.name = name; } public void approve(FundingRequest fundingRequest) { if (fundingRequest.getAmount() >= 100000 && fundingRequest.getAmount() < 500000) { System.out.println(name + "审批通过。"); } else { System.out.println("金额超过" + 500000 + "元,无法审批。"); } } } // 定义主管财务校领导类 class FinanceLeader implements Approver { private String name; public FinanceLeader(String name) { this.name = name; } public void approve(FundingRequest fundingRequest) { if (fundingRequest.getAmount() >= 500000) { System.out.println(name + "审批通过。"); } else { System.out.println("金额未达到" + 500000 + "元,无法审批。"); } } } // 定义经费申请类 class FundingRequest { private int amount; public FundingRequest(int amount) { this.amount = amount; } public int getAmount() { return amount; } } // 定义经费报销审批流程类 class FundingApprovalProcess { private Approver unitLeader; private Approver departmentLeader; private Approver schoolLeader; private Approver financeLeader; public FundingApprovalProcess() { unitLeader = new UnitLeader("学院负责人"); departmentLeader = new DepartmentLeader("归口职能部门负责人"); schoolLeader = new SchoolLeader("分管校领导"); financeLeader = new FinanceLeader("主管财务校领导"); // 设置审批者之间的关系 unitLeader.setNextApprover(departmentLeader); departmentLeader.setNextApprover(schoolLeader); schoolLeader.setNextApprover(financeLeader); } public void approveFundingRequest(FundingRequest fundingRequest) { unitLeader.approve(fundingRequest); } } // 测试 public class Test { public static void main(String[] args) { FundingApprovalProcess fundingApprovalProcess = new FundingApprovalProcess(); fundingApprovalProcess.approveFundingRequest(new FundingRequest(30000)); fundingApprovalProcess.approveFundingRequest(new FundingRequest(80000)); fundingApprovalProcess.approveFundingRequest(new FundingRequest(300000)); fundingApprovalProcess.approveFundingRequest(new FundingRequest(800000)); } } ``` 输出结果: ``` 学院负责人审批通过。 归口职能部门负责人审批通过。 分管校领导审批通过。 主管财务校领导审批通过。 ``` (2)生活中可以用到职责模式的场景: 例如,某公司的 HR 部门需要对员工请假申请进行审批。根据请假天数的不同,审批流程不同。请假天数在1-3天之内,由直接上级审批;请假天数在3-7天之内,由部门经理审批;请假天数在7天以上,由总经理审批。这种场景可以使用职责模式来实现。 指责模式的优缺点: 优点: 1. 将请求和处理分离,降低了耦合度,使得代码更容易扩展和维护; 2. 可以动态地改变请求的处理顺序,灵活性高; 3. 符合开闭原则,增加新功能时不需要修改已有类的代码。 缺点: 1. 由于每个请求都要从链头开始遍历,因此处理请求的效率较低; 2. 如果链太长,会影响系统性能; 3. 调试时可能比较困难。

相关推荐

最新推荐

recommend-type

合作式智能运输系统车用通信系统应用层及应用数据交互标准(第二阶段).pdf

本标准由中国智能交通产业联盟(C-ITS) 提出并归口。 本标准起草单位:北京星云互联科技有限公司、电信科学技术研究院有限公司、华为技术有限公司、中国信息通信研究院、中兴通讯股份有限公司、重庆长安汽车股份...
recommend-type

国家标准《信息安全技术 政府网站系统安全指南》(征求意见稿)修订编制说明.docx

根据《全国信息安全标准化技术委员会关于2019年网络安全标准项目立项的通知》(信安秘字[2019]050号),该项目由全国信息安全标准化技术委员会提出,全国信息安全标准化技术委员会归口,由北京信息安全测评中心负责...
recommend-type

DB42T455-2008湖北省电子政务纵向网络组网规范.doc

本部分由湖北省标准化协会电子政务专业委员会归口。 本部分主要起草单位:武汉大学计算机学院、湖北省标准化研究院。 本部分参加起草单位:武汉大学电子政务研究中心、湖北全达信息科技有限公司。
recommend-type

M2M平台设备规范接口要求、性能要求、可靠性要求

本设备规范对开放全网行业应用的移动M2M平台设备需要实现的功能提出要求,是各省在开展全网行业应用过程中需要遵从的技术文件。 本规范主要包括以下几个方面的内容:移动M2M平台业务功能要求、网管要求、接口要求、...
recommend-type

中国移动_NGBOSS1-BOSS技术规范V2

在NG1-BOSS(1.0)规范的基础上,保持两级中心的原则,继承三层结构的思想,以可复用性、可扩展性、业务灵活性为设计原则,定义中国移动省级BOSS系统的系统架构、系统边界和系统接口,并对系统关键性技术提出要求,...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。