• 职责链模式财务审批


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

    实验要求:

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

    类图:

    截图:

    代码部分;

    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()+" "+"数额过大,需开会决定!");
    }
    }
    }

  • 相关阅读:
    15. DML, DDL, LOGON 触发器
    5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
    4. 跟踪标记 (Trace Flag) 610 对索引组织表(IOT)最小化日志
    14. 类似正则表达式的字符处理问题
    01. SELECT显示和PRINT打印超长的字符
    3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
    2. 跟踪标记 (Trace Flag) 3604, 3605 输出DBCC命令结果
    1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式
    0. 跟踪标记 (Trace Flag) 简介
    SpringBoot + Redis + Shiro 实现权限管理(转)
  • 原文地址:https://www.cnblogs.com/092e/p/15530371.html
Copyright © 2020-2023  润新知