今日报告

职责链模式

 

某物资管理系统中物资采购需要分级审批,主任可以审批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 @   周+⑦  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示