今日报告

职责链模式

 

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

PurchaseRequest.java

 

public class PurchaseRequest {
    private double amount;

    public PurchaseRequest(double amount) {
        this.amount = amount;
    }

    public double getAmount() {
        return amount;
    }
}

 

Handler.java

public abstract class Handler {
    protected Handler nextHandler;

    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    public abstract void handleRequest(PurchaseRequest request);
}

DirectorHandler.java

public class DirectorHandler extends Handler {
    @Override
    public void handleRequest(PurchaseRequest request) {
        if (request.getAmount() <= 10000) {
            System.out.println("主任审批采购单通过。");
        } else if (nextHandler != null) {
            nextHandler.handleRequest(request);
        }
    }
}

ManagerHandler.java

public class ManagerHandler extends Handler {
    @Override
    public void handleRequest(PurchaseRequest request) {
        if (request.getAmount() <= 50000) {
            System.out.println("部门经理审批采购单通过。");
        } else if (nextHandler != null) {
            nextHandler.handleRequest(request);
        }
    }
}

VicePresidentHandler.java

public class VicePresidentHandler extends Handler {
    @Override
    public void handleRequest(PurchaseRequest request) {
        if (request.getAmount() <= 100000) {
            System.out.println("副总经理审批采购单通过。");
        } else if (nextHandler != null) {
            nextHandler.handleRequest(request);
        }
    }
}

PresidentHandler.java

public class PresidentHandler extends Handler {
    @Override
    public void handleRequest(PurchaseRequest request) {
        if (request.getAmount() <= 200000) {
            System.out.println("总经理审批采购单通过。");
        } else {
            System.out.println("采购单需要召开职工大会确定。");
        }
    }
}

Client.java

public class Client {
    public static void main(String[] args) {
        Handler director = new DirectorHandler();
        Handler manager = new ManagerHandler();
        Handler vicePresident = new VicePresidentHandler();
        Handler president = new PresidentHandler();

        director.setNextHandler(manager);
        manager.setNextHandler(vicePresident);
        vicePresident.setNextHandler(president);

        // 创建一个采购申请
        PurchaseRequest request = new PurchaseRequest(150000);

        // 通过责任链处理采购申请
        director.handleRequest(request);
    }
}

 

posted @ 2023-11-16 08:49  周+⑦  阅读(21)  评论(0)    收藏  举报