审批流
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.运行结果
相关阅读
笔者在文中讲述了身处大规模团队之中,如何利用流程和工具减少沟通成本。上两篇中,我们探讨了大规模团队中可能会出现的沟通问题,以及
步骤一、账户未登录情况下,点击淘宝网首页左上角【免费注册】。步骤二、根据页面提示输入手机接收验证码验证。若页面提示手机账户
淘宝电子凭证交易内容和流程是什么?随着电子凭证交易越来越受欢迎,很多关于淘宝电子凭证交易内容和流程的相关问题不约而来,今天小
一、平台上线标准目前各个平台的上线流程大同小异,产品上线之前要了解下各平台对产品上线前后评级的数据标准,这些标准包括两个方面
在淘宝上的代购店铺可谓不计其数了吧!这也方便了不少的买家在淘宝上面选购国外的商品,尤其是以母婴用品和护肤品为主,那么大家知道