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

相关文章
|
4天前
|
安全 数据挖掘 BI
一款功能全面且免费的OA办公系统,下载即用
点晴免费OA办公系统是一款完全免费,不限使用时间,不限用户数,功能全面的免费OA办公系统,下载安装即用,使用点晴OA办公系统可以简单快速地建立办公自动化系统。
31 5
|
5天前
钉钉OA审批bpms_instance_change无法获取finish消息
订阅了bpms_task_change和bpms_instance_change消息,bms_task_change能正常接收,但bpms_instance_change仅能接收到start事件,无法接收到finish事件。可能原因是finish事件的发布机制或订阅配置存在问题。
15 0
|
1月前
|
监控
点晴OA系统为企业的发展注入新的活力
点晴OA办公系统是真正完全免费的协同OA系统软件商,而且是不限使用时间,不限用户数,不限功能模块的免费OA办公系统,为企业全面实现行政办公一体化,深受众多企业的青睐。
27 5
|
1月前
|
安全 搜索推荐 数据安全/隐私保护
点晴免费OA办公系统:高效协同,安全易用
信息技术发展推动企业信息化,即企业利用现代技术提升生产、经营、管理效率,增强竞争力。点晴免费OA系统作为信息化管理的基础,是实现企业信息化的关键手段。
40 2
|
2月前
|
数据安全/隐私保护
点晴OA办公系统让企业变得高效协同
随着企业信息化进程的加快,很多企业开始寻求使用企业管理免费OA办公系统来提高工作效率。然而,有些些企业可能缺乏信息化经验,对技术一无所知,甚至从未接触过OA办公系统。在这种情况下,企业需要寻求功能比较全面的OA办公系统,以满足企业的实际需求。
50 1
|
2月前
|
敏捷开发 数据可视化 数据挖掘
哪些OA任务管理系统值得推荐?4款高效办公工具介绍
在现代企业中,OA(办公自动化)任务管理系统是提升工作效率和团队协作的关键工具。本文介绍了4款备受推崇的OA任务管理系统:板栗看板、Trello、Asana和Monday.com,分别从提高工作效率、增强团队协作、优化资源分配和提升工作质量等方面进行了详细说明,为用户提供全面的参考和选择指南。
|
2月前
|
存储 安全 数据安全/隐私保护
如何明智选择免费OA系统的关键因素
在数字化办公日益普及的今天,选择一款合适的免费OA系统对于企业提升工作效率和管理水平至关重要。不管是办公的便捷方便,还是与其他平台的融合,免费OA系统的选择,需要看这几点,易用性、开放性、稳定性、服务性、实用性、安全性。
26 0
|
3月前
|
搜索推荐 BI 数据处理
点晴OA系统让考勤管理不再头疼
在当今数字化管理趋势下,点晴OA办公系统中的考勤管理作为企业内部管理的重要组成部分,其自动化和智能化水平的提高在提高企业运营效率和员工满意度方面发挥着重要作用。
59 4
|
3月前
|
数据安全/隐私保护 UED
免费OA办公系统的实力派:点晴OA
点晴OA办公系统是一款面向中小企业的办公自动化解决方案,旨在提高工作效率和优化管理流程。它通过提供多维度的功能模块结构、高度的定制化能力、友好的用户界面以及安全可靠的数据保护机制,满足企业日常办公的多样化需求。以下是关于点晴OA办公系统的详细介绍:
103 0
|
4月前
|
JavaScript 前端开发 搜索推荐
【Vue 2】一个功能强大OA办公系统,开源且免费!!
【Vue 2】一个功能强大OA办公系统,开源且免费!!