当前位置 : 主页 > 编程语言 > java >

职责链模式---财务审批

来源:互联网 收集:自由互联 发布时间:2022-06-23
今天做了职责链模式---财务审批的实验,用了差不多两个小时的时间,理解了职责链模式的原理,下面是职责链模式的验要求和实现。 实验要求: 某物资管理系统中物资采购需要分级

今天做了职责链模式---财务审批的实验,用了差不多两个小时的时间,理解了职责链模式的原理,下面是职责链模式的验要求和实现。

实验要求:

某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。

类图:

职责链模式---财务审批_java

 


 

 

截图:

职责链模式---财务审批_职责链模式_02

 


代码部分;

 

package 职责链模式;

import java.math.BigDecimal;
class Director extends Leader{
public Director(String name){
super(name);
}
public void handlerRequest(Request request){
BigDecimal bigDecimal=new BigDecimal(10000.00);
if(request.getCost().compareTo(bigDecimal)==-1||request.getCost().compareTo(bigDecimal)==0){
System.out.println("主任"+name+"审批,采购金额为:"+request.getCost());
}
else {
this.successor.handlerRequest(request);
}
}
}

 

package 职责链模式;

import java.math.BigDecimal;
class GeneralManager extends Leader{
public GeneralManager(String name){
super(name);
}
public void handlerRequest(Request request){
BigDecimal bigDecimal=new BigDecimal(100000.00);
if(request.getCost().compareTo(bigDecimal)==-1||request.getCost().compareTo(bigDecimal)==0){
System.out.println("副总经理"+name+"审批,采购金额为:"+request.getCost());
}
else {
this.successor.handlerRequest(request);
}
}
}

 

package 职责链模式;

abstract public class Leader {
protected String name;
protected Leader successor;

public void setSuccessor(Leader successor){
this.successor=successor;
}

public Leader(String name){
this.name=name;
}
abstract public void handlerRequest(Request request);
}


package 职责链模式;

import java.math.BigDecimal;
class PartmentManager extends Leader{
public PartmentManager(String name){
super(name);
}
public void handlerRequest(Request request){
BigDecimal bigDecimal=new BigDecimal(50000.00);
if(request.getCost().compareTo(bigDecimal)==-1||request.getCost().compareTo(bigDecimal)==0){
System.out.println("部门经理"+name+"审批,采购金额为:"+request.getCost());
}
else {
this.successor.handlerRequest(request);
}
}
}


package 职责链模式;

import java.math.BigDecimal;
class Request{
private BigDecimal cost;
public Request(BigDecimal bigDecimal){
this.cost=bigDecimal;
}
public BigDecimal getCost(){
return cost;
}
public void setCost(BigDecimal bigDecimal){
this.cost=bigDecimal; }
}


package 职责链模式;

import java.math.BigDecimal;
import java.util.ArrayList;

public class TestLeader {
public static void main(String args[]) {
Leader director = new Director("Tom"),
partmentManager = new PartmentManager("Jack"),
generalManager = new GeneralManager("Rose"),
vic = new VicManager("Wang");

director.setSuccessor(partmentManager);
partmentManager.setSuccessor(generalManager);
generalManager.setSuccessor(vic);

Request request=new Request(new BigDecimal(70000.00)),
request1=new Request(new BigDecimal(150000.00)),
request2=new Request(new BigDecimal(210000.00));
director.handlerRequest(request);
director.handlerRequest(request1);
director.handlerRequest(request2);

}
}


package 职责链模式;

import java.math.BigDecimal;
class VicManager extends Leader{
public VicManager(String name){
super(name);
}
public void handlerRequest(Request request){
BigDecimal bigDecimal=new BigDecimal(200000.00);
if(request.getCost().compareTo(bigDecimal)==-1||request.getCost().compareTo(bigDecimal)==0){
System.out.println("总经理"+name+"审批,采购金额为:"+request.getCost());
}
else {
System.out.println("采购金额为:"+request.getCost()+" "+"数额过大,需开会决定!");
}
}
} 【文章原创作者:国外高防服务器 http://www.558idc.com/shsgf.html转载请说明出处】
上一篇:访问者模式---打包员
下一篇:没有了
网友评论