设计模式--职责链模式
类图
源码
ShoppingRequest.java package com.chain; public class ShoppingRequest { private String shoppingReason; private double billMoney; public ShoppingRequest(String shoppingReason,double billMoney) { this.shoppingReason=shoppingReason; this.billMoney=billMoney; } public String getShoppingReason() { return shoppingReason; } public void setShoppingReason(String shoppingReason) { this.shoppingReason = shoppingReason; } public double getBillMoney() { return billMoney; } public void setBillMoney(double billMoney) { this.billMoney = billMoney; } } Leader.java package com.chain; public abstract class Leader { protected String name; protected Leader successor; public Leader(String name) { this.name=name; } public void setSuccessor(Leader successor) { this.successor=successor; } public abstract void HandleRequest(ShoppingRequest request); } Director.java package com.chain; public class Director extends Leader{ public Director(String name) { super(name); } public void HandleRequest(ShoppingRequest request) { if(request.getBillMoney()<10000.00) { System.out.println("主任"+name+"处理物资采购:"+ request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB"); }else { if(this.successor!=null) { this.successor.HandleRequest(request); } } } } DepartmentManager.java package com.chain; public class DepartmentManager extends Leader{ public DepartmentManager(String name) { super(name); } public void HandleRequest(ShoppingRequest request) { if(request.getBillMoney()<50000.00) { System.out.println("部门经理"+name+"处理物资采购:"+ request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB"); }else { if(this.successor!=null) { this.successor.HandleRequest(request); } } } } ViceManager.java package com.chain; public class ViceManager extends Leader{ public ViceManager(String name) { super(name); } public void HandleRequest(ShoppingRequest request) { if(request.getBillMoney()<100000.00) { System.out.println("副经理"+name+"处理物资采购:"+ request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB"); }else { if(this.successor!=null) { this.successor.HandleRequest(request); } } } } GeneralManager.java package com.chain; public class GeneralManager extends Leader { public GeneralManager(String name) { super(name); } public void HandleRequest(ShoppingRequest request) { if(request.getBillMoney()<200000.00) { System.out.println("总经理"+name+"处理物资采购:"+ request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB"); }else { if(this.successor!=null) { this.successor.HandleRequest(request); } } } } MeetManager.java package com.chain; public class MeetManager extends Leader{ public MeetManager(String name) { super(name); } public void HandleRequest(ShoppingRequest request) { if(request.getBillMoney()>=200000.00) { System.out.println("职工大会"+name+"处理:"+ request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB"); }else { if(this.successor!=null) { this.successor.HandleRequest(request); } } } } Client.java package com.chain; public class Client { public static void main(String[] args) { Leader objDirector,objDepartmentManager,objViceManager,objGeneralManager,objMeetManager; objDirector = new Director("张三"); objDepartmentManager=new DepartmentManager("李四"); objViceManager=new ViceManager("王五"); objGeneralManager =new GeneralManager("钱六"); objMeetManager =new MeetManager("全体职工"); objDirector.setSuccessor(objDepartmentManager); objDepartmentManager.setSuccessor(objViceManager); objViceManager.setSuccessor(objGeneralManager); objGeneralManager.setSuccessor(objMeetManager); ShoppingRequest shopping1=new ShoppingRequest("购买打印纸", 1000.00); objDirector.HandleRequest(shopping1); ShoppingRequest shopping2=new ShoppingRequest("配置空调", 25000.00); objDepartmentManager.HandleRequest(shopping2); ShoppingRequest shopping3=new ShoppingRequest("更新电脑", 80000.00); objViceManager.HandleRequest(shopping3); ShoppingRequest shopping4=new ShoppingRequest("车间维修", 150000.00); objGeneralManager.HandleRequest(shopping4); ShoppingRequest shopping5=new ShoppingRequest("收购红星公司", 4000000.00); objMeetManager.HandleRequest(shopping5); } }
测试截图
__EOF__

本文作者:往心。
本文链接:https://www.cnblogs.com/lx06/p/15688487.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/lx06/p/15688487.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2020-12-14 jsp标签问题