![]()
/**
* @Author zh
* @Description 请求实体类
* @Date 2021/12/20
*/
@Data
@ToString
public class BuyRequest {
private Integer id;//请求的id
private String name;//请求的name
private double price;//请求的金额
}
/**
* @Author zh
* @Description 审批请求类
* @Date 2021/12/20
*/
@Data
public abstract class ApproverRequest {
//持有下一个审批的对象
private ApproverRequest ApproverRequest =null;
//审批的方法
public abstract void processRequest(BuyRequest buyRequest);
}
/*
1-100 组长审
101-1000 经理审
//10001- ~ 总监审
*/
//一审进行处理
@Override
public void processRequest(BuyRequest buyRequest) {
double price = buyRequest.getPrice();
if (price>=1&&price<=100){
System.out.println("组长审核通过或者驳回");
}else {
//获取下一级的对象
ApproverRequest nextApproverRequest =getApproverRequest();
nextApproverRequest.processRequest(buyRequest);
}
}
}
public class TwoApprover extends ApproverRequest {
@Override
public void processRequest(BuyRequest buyRequest) {
double price = buyRequest.getPrice();
if (price>=101&&price<=1000){
System.out.println("经理审核通过或者驳回");
}else {
//获取下一级对象
ApproverRequest nextApproverRequest =getApproverRequest();
nextApproverRequest.processRequest(buyRequest);
}
}
}
public class ThreeApprover extends ApproverRequest {
@Override
public void processRequest(BuyRequest buyRequest) {
System.out.println("总监审核通过或者驳回");
}
}
public class TMain
{
public static void main(String[] args) {
//1有请求的对象: 买东西
BuyRequest buyRequest =new BuyRequest();
buyRequest.setId(1001);
buyRequest.setName("打印机");
buyRequest.setPrice(100.2);
ApproverRequest one =new OneApprover();
ApproverRequest two =new TwoApprover();
ApproverRequest three =new ThreeApprover();
one.setApproverRequest(two); //链
two.setApproverRequest(three);
//你只调用了one
one.processRequest(buyRequest);
}
}