某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该请假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批

简介: 该博客文章通过一个OA系统中的请假审批模块示例,使用Java语言实现了职责链模式,展示了如何根据不同的请假天数由不同级别的领导进行审批,并讨论了职责链模式的优缺点。

某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该请假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批;如果超过30天,总经理也不能审批,提示相应的拒绝信息。

要求绘制相应的类图并使用Java语言编程模拟实现。

UML类图
在这里插入图片描述

package com.zheng;

public abstract class Approver {
    protected Approver successor;//定义后继对象
    protected String name;//审批者姓名
    public Approver(String name) {
        this.name=name;
    }

    //设置后继审批者
    public void setSuccessor(Approver successor) {
        this.successor=successor;
    }
    //抽象请求处理方法
    public abstract void processRequest(PurchaseRequest request);

}
package com.zheng;

public class PurchaseRequest {
    private int time;   //请假时间
    public PurchaseRequest(int time) {
        this.time=time;
    }

    public int getTime() {
        return time;
    }

    public void setTime(int time) {
        this.time = time;
    }

}
package com.zheng;

public class Director extends Approver {
    public Director(String name) {
        super(name);
    }
//具体请求处理方法
    @Override
    public void processRequest(PurchaseRequest request) {
        if(request.getTime()<3) {
            System.out.println("主任"+this.name+"批准请假:"+request.getTime());
            System.out.println("请假成功");

        }else {
            this.successor.processRequest(request);//转发请求
        }

    }

}
package com.zheng;

public class VicePresident extends Approver {
    public VicePresident(String name) {
        super(name);
    }
//具体请求处理方法
    @Override
    public void processRequest(PurchaseRequest request) {
        if(request.getTime()<10) {
            System.out.println("经理"+this.name+"批准请假:"+request.getTime());
            System.out.println("请假成功");
        }else {
            this.successor.processRequest(request);//转发请求
        }

    }

}
package com.zheng;

public class President extends Approver {
    public President(String name) {
        super(name);
    }
//具体请求处理方法
    @Override
    public void processRequest(PurchaseRequest request) {
        if(request.getTime()<30) {
            System.out.println("总经理"+this.name+"批准请假:"+request.getTime());
            System.out.println("请假成功");
        }else {
            System.out.println("对不起,请假时间太长。总经理无权批假。");
        }

    }

}
package com.zheng;

import java.util.Scanner;

public class Client {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        //职责中的关系对象
        Approver w1,w2,w3;
        w1=new Director("小红1");
        w2=new VicePresident("小红2");
        w3=new President("小红3");
        //创建职责链
        w1.setSuccessor(w2);
        w2.setSuccessor(w3);
        while(true) {
            Scanner scan=new Scanner(System.in);
            System.out.println("请输入请假天数:");
            int time=scan.nextInt();        
            PurchaseRequest pr1=new PurchaseRequest(time);
            w1.processRequest(pr1);
        }    
    }
}

运行截图
在这里插入图片描述
职责链模式优点:1、降低了系统的耦合性。2、简化了对象之间的相互连接。3、可以灵活的增加对请求处理的职责。4、符合开闭原则
职责链模式缺点:1、一个请求没有具体的接受者,客户发出的请求可能得不到解决。2、建链不当,可能会造成系统陷入死循环。3、对于较长的请求、每个处理对象可能都会处理一部分。对系统的性能造成一定的影响。

相关文章
|
24天前
|
数据安全/隐私保护
点晴OA办公系统让企业变得高效协同
随着企业信息化进程的加快,很多企业开始寻求使用企业管理免费OA办公系统来提高工作效率。然而,有些些企业可能缺乏信息化经验,对技术一无所知,甚至从未接触过OA办公系统。在这种情况下,企业需要寻求功能比较全面的OA办公系统,以满足企业的实际需求。
34 1
|
14天前
|
敏捷开发 数据可视化 数据挖掘
哪些OA任务管理系统值得推荐?4款高效办公工具介绍
在现代企业中,OA(办公自动化)任务管理系统是提升工作效率和团队协作的关键工具。本文介绍了4款备受推崇的OA任务管理系统:板栗看板、Trello、Asana和Monday.com,分别从提高工作效率、增强团队协作、优化资源分配和提升工作质量等方面进行了详细说明,为用户提供全面的参考和选择指南。
|
19天前
|
存储 安全 数据安全/隐私保护
如何明智选择免费OA系统的关键因素
在数字化办公日益普及的今天,选择一款合适的免费OA系统对于企业提升工作效率和管理水平至关重要。不管是办公的便捷方便,还是与其他平台的融合,免费OA系统的选择,需要看这几点,易用性、开放性、稳定性、服务性、实用性、安全性。
13 0
|
2月前
|
搜索推荐 BI 数据处理
点晴OA系统让考勤管理不再头疼
在当今数字化管理趋势下,点晴OA办公系统中的考勤管理作为企业内部管理的重要组成部分,其自动化和智能化水平的提高在提高企业运营效率和员工满意度方面发挥着重要作用。
52 4
|
2月前
|
数据安全/隐私保护 UED
免费OA办公系统的实力派:点晴OA
点晴OA办公系统是一款面向中小企业的办公自动化解决方案,旨在提高工作效率和优化管理流程。它通过提供多维度的功能模块结构、高度的定制化能力、友好的用户界面以及安全可靠的数据保护机制,满足企业日常办公的多样化需求。以下是关于点晴OA办公系统的详细介绍:
77 0
|
3月前
|
JavaScript 前端开发 搜索推荐
【Vue 2】一个功能强大OA办公系统,开源且免费!!
【Vue 2】一个功能强大OA办公系统,开源且免费!!
|
3月前
|
监控 数据安全/隐私保护
点晴OA系统,有效提升企业办公效率落实执行力
点晴OA系统通过其独特的功能和优势,有效提升了企业的办公效率并落实了执行力。以下是关于点晴OA系统提升企业办公效率及执行力的相关信息:
60 0
|
4月前
|
监控 BI
点晴免费OA办公系统全面了解看这里
在当今数码化办公环境中。免费OA办公系统已经成为企业管理的核心工具之一。免费OA办公平台是一种集成了各种办公工具、软件和流程的综合系统,旨在提高工作效率、降低沟通成本,并推动组织数字化转型。
59 4
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的企业oa管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的企业oa管理系统附带文章源码部署视频讲解等
41 1
|
4月前
|
数据安全/隐私保护
推荐一款中小企事业单位都能用的免费OA系统
在数字化办公时代,选择合适的免费OA办公系统对于提高工作效率和管理水平至关重要。在众多免费OA办公系统中,点晴免费OA办公系统深受中小企事业单位,其功能全面、易用性好,能够满足企业的日常办公需求。
158 6