某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、对于较长的请求、每个处理对象可能都会处理一部分。对系统的性能造成一定的影响。

相关文章
如何搭建一套无纸化自动审批OA系统
很多公司使用OA系统仍面临流程混乱、审批缓慢的问题。本文介绍如何快速搭建一套智能无纸化OA系统,解决传统OA流程不畅、系统难用等痛点,助力企业实现高效自动化办公,适合希望提升办公效率的管理者和IT人员参考实践。
|
3月前
|
安全
员工总在找领导签字?点晴移动OA实现全员"零跑腿"办公
“张总,这份合同需要您签字!” “王经理,报销单麻烦批一下!” “李总监,请假申请您还没批,我这边着急……” 这样的场景是否每天都在你的企业上演?员工疲于跑腿找领导签字,管理层被琐碎审批缠身,业务流程卡在“最后一公里”。传统纸质审批不仅效率低下,还可能导致文件丢失、流程延误,甚至影响业务推进。 如何破解这一管理困局?点晴移动OA系统,通过智能化、无纸化、移动化办公,让审批流程“跑”起来,真正实现**全员“零跑腿”办公!
113 1
|
8天前
|
存储 数据可视化 数据安全/隐私保护
点晴免费OA系统用协同平台重塑企业管理模式
在数字化转型的浪潮下,企业的竞争已不再局限于产品和市场,更在于内部效率与知识价值的挖掘。如何让团队协作更顺畅?如何将分散的经验转化为组织智慧?这正是点晴免费OA系统的核心价值所在。
26 4
|
6月前
|
人工智能 自然语言处理 数据挖掘
企业数字化转型的关键:如何利用OA系统实现自动化与智能决策
在数字化时代,传统办公系统已无法满足现代企业的需求。通过将RPA(机器人流程自动化)和AI(人工智能)技术与OA系统结合,企业能实现业务流程自动化、智能决策支持,大幅提升工作效率和资源配置优化,推动数字化转型。RPA可自动处理重复任务,如审批、数据同步等;AI则提供智能数据分析、预测和决策支持,两者协同作用,助力财务管理、人力资源管理、项目管理和客户服务等多个领域实现智能化升级。未来,智能化OA系统将进一步提升个性化服务、数据安全和协作能力,成为企业发展的关键驱动力。
|
3月前
|
存储 安全 数据安全/隐私保护
为什么越来越多的企业选择点晴OA系统?
在数字化转型的浪潮下,企业对于高效、智能的办公管理需求日益增长。点晴OA系统凭借其强大的功能、灵活的定制能力和卓越的用户体验,正成为越来越多企业的必要选择。那么,究竟是什么让点晴OA系统脱颖而出?
51 0
|
4月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
194 17
|
4月前
|
安全 数据可视化 搜索推荐
点晴OA系统:无缝集成,打造高效办公生态圈
在数字化转型浪潮中,企业办公效率的提升已成为决定竞争力的关键因素。点晴OA系统以其卓越的无缝集成能力,正在重塑现代企业的办公生态,为组织带来前所未有的效率提升。
124 5
|
5月前
|
搜索推荐 数据可视化 数据挖掘
点晴OA系统:用户体验至上,操作简单易上手
在数字化转型的浪潮中,企业选择办公自动化(OA)系统时,除了关注功能强大与否,更看重系统的用户体验。一个操作复杂、学习成本高的系统,不仅会降低员工的工作效率,还可能影响企业的整体运营。点晴OA系统以“用户体验至上”为核心理念,致力于打造操作简单、易上手的办公平台,帮助企业快速实现高效办公。
93 1
|
5月前
|
UED
点晴免费OA系统让企业办公一键疏通
随着时代的发展,企业的管理难度越来越大,而点晴免费OA系统是企业数字化转型的得力助手,帮助企业提升工作效率,优化资源配置,促进信息共享,从而打破部门间信息壁垒,助力企业在竞争中脱颖而出。
69 3
|
6月前
|
存储 安全 BI
怎样利用点晴免费OA办公系统提升工作效率
随着信息技术的不断发展,OA办公系统的使用率越来越高,让企业更快捷、高效地处理各类事务。点晴免费OA办公系统是一款全面优秀的办公管理系统,其强大的功能和灵活性,为办公环境带来了巨大提升。
99 10