必威体育Betway必威体育官网
当前位置:首页 > IT技术

实际项目-审批流程的实现

时间:2019-09-26 17:46:06来源:IT技术作者:seo实验室小编阅读:77次「手机版」
 

审批流

1.需求

这里写图片描述


2.前言

我们可以快速的实现该工作审批流程,比如通过多个if-else去判断,但是当我们审批对象发生改变了,那我们的代码又需要去改动,破坏了软件的开闭原则。所以这里我们用一种行为设计模式:责任链模式。


3.java代码具体实现

这里写图片描述

Leaverequest.java
package com.cxx.chainOfResp;

/**
 * 封装请假的基本信息
 * @Author: cxx
 * @Date: 2018/7/10 23:46
 */
public class LeaveRequest {
    private String name;//请假人姓名
    private int days;//请假天数
    private String reason;//请假原因

    public LeaveRequest(String name, int days, String reason) {
        this.name = name;
        this.days = days;
        this.reason = reason;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getDays() {
        return days;
    }

    public void setDays(int days) {
        this.days = days;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }
}
Leader.java
package com.cxx.chainOfResp;

/**
 * 抽象类
 * @Author: cxx
 * @Date: 2018/7/10 23:47
 */
public abstract class Leader {
    protected String name;
    protected Leader nextLeader;//责任链后期对象
    public Leader(){

    }

    public Leader(String name){
        super();
        this.name=name;
    }

    public void setNextLeader(Leader nextLeader) {
        this.nextLeader = nextLeader;
    }

    //处理请求核心业务方法
    public abstract void handlerequest(LeaveRequest leaveRequest);
}
Director.java
package com.cxx.chainOfResp;

/**
 * 主任
 * @Author: cxx
 * @Date: 2018/7/10 23:51
 */
public class Director extends Leader {

    public Director(String name){
        super(name);
    }
    @Override
    public void handleRequest(LeaveRequest leaveRequest) {
        if (leaveRequest.getDays()<3){
            //处理
            System.out.println("主任审批通过...");
        }else {
            //处理不了,给下处理
            this.nextLeader.handleRequest(leaveRequest);
        }
    }
}
Manager.java
package com.cxx.chainOfResp;

/**
 * 经理  处理3-10天请假
 * @Author: cxx
 * @Date: 2018/7/10 23:54
 */
public class Manager extends Leader{
    public Manager(String name){
        super(name);
    }
    @Override
    public void handleRequest(LeaveRequest leaveRequest) {
        if (leaveRequest.getDays()>3&&leaveRequest.getDays()<=10){
            System.out.println("经理审批成功");
        }else {
            this.nextLeader.handleRequest(leaveRequest);
        }
    }
}
GeneralManager.java
package com.cxx.chainOfResp;

/**
 * 总经理 10-30天
 * @Author: cxx
 * @Date: 2018/7/10 23:56
 */
public class GeneralManager extends Leader {
    public GeneralManager(String name){
        super(name);
    }
    @Override
    public void handleRequest(LeaveRequest leaveRequest) {
        if (leaveRequest.getDays()<30){
            System.out.println("总经理审批通过...");
        }else {
            System.out.println(leaveRequest.getName()+":想辞职吧!");
        }
    }
}
测试类
package com.cxx.chainOfResp;

/**
 * 测试 请假审批流程
 * @Author: cxx
 * @Date: 2018/7/10 23:58
 */
public class ChainTest {
    public static void main(String[] args) {
        Leader a = new Director("主任");
        Leader b = new Manager("经理");
        Leader c = new GeneralManager("总经理");

        //责任链对象关系
        a.setNextLeader(b);
        b.setNextLeader(c);

        //测试
        LeaveRequest request = new LeaveRequest("cxx",2,"回家看病");
        a.handleRequest(request);
    }
}

4.运行结果

这里写图片描述

这里写图片描述

这里写图片描述

相关阅读

大规模团队里,沟通的流程制度是怎样的

笔者在文中讲述了身处大规模团队之中,如何利用流程和工具减少沟通成本。上两篇中,我们探讨了大规模团队中可能会出现的沟通问题,以及

如何注册淘宝账号?注册流程步骤详解

步骤一、账户未登录情况下,点击淘宝网首页左上角【免费注册】。步骤二、根据页面提示输入手机接收验证码验证。若页面提示手机账户

淘宝电子凭证交易内容和流程是什么?

淘宝电子凭证交易内容和流程是什么?随着电子凭证交易越来越受欢迎,很多关于淘宝电子凭证交易内容和流程的相关问题不约而来,今天小

干货:各大游戏应用渠道的联运流程参考

一、平台上线标准目前各个平台的上线流程大同小异,产品上线之前要了解下各平台对产品上线前后评级的数据标准,这些标准包括两个方面

新开淘宝代购店购物流程是什么?有哪些步骤?

在淘宝上的代购店铺可谓不计其数了吧!这也方便了不少的买家在淘宝上面选购国外的商品,尤其是以母婴用品和护肤品为主,那么大家知道

分享到:

栏目导航

推荐阅读

热门阅读