0-前言
职责链模式定义:
使多个对象都有机会处理请求,从而避免请求的发送者喝接受者之间的耦合关系。
将这个对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止。
1-实现
1-1、简单UML图

1-2、代码实现
//1、处理请求的抽象父类abstract class Handler{ //A、设置下一处理节点 protected Handler NestHandler; public void setNestHandler(Handler nestHandler) { NestHandler = nestHandler; } //B、处理方法 public abstract void HandlerRequest(int count);}//1-1、具体的请求处理者A class HandlerHR extends Handler{ //B、处理方法 @Override public void HandlerRequest(int count) { if (count<5) //能处理,直接处理 { System.out.println("才招几个人,HR经理直接就能决定--------------"); } else //不能处理,交给下一个节点处理 { if (NestHandler !=null) { System.out.println("招聘人数超过5个,HR经理无权定夺,交给下一节点处理:--------------------"); NestHandler.HandlerRequest(count); } } }}//1-1、具体的请求处理者Aclass HandlerBoss extends Handler{ //B、处理方法 @Override public void HandlerRequest(int count) { if (count>5) //能处理 { System.out.println("招超过5个人,老板我来拍板"); } else //还不能处理,继续交给链的下一个节点处理.... { } }}
客户端
Handler hr = new HandlerHR(); Handler boss = new HandlerBoss(); hr.setNestHandler(boss); hr.HandlerRequest(4); hr.HandlerRequest(6);
运行结果

2、应用场景简单总结
1、当有多个对象可以处理同一个请求,而具体哪个对象来处理这个请求在运行时刻需要自动判定时;
2、当需要在不明确接受者的情况下向多个对象中某一个提交请求时;
3、当处理一个请求的对象集合应该动态地被确定时
无废话设计模式(20)行为型模式ChannelAdvisor携手拉丁美洲最大电商平台Mercadolibre CBT诚意来深招商!、 CPC关键词选择、 imgur、 解密 | 为什么wish刷单没有什么效果!、 罢工、暴乱、多国新规,你关心的外贸大事,都在这里!、 Wish旺季如何爆单?哪些热销品类值得关注?、 从化有什么地方好玩的?有哪些好玩的地方?、 怎么去羊城创意产业园?、 荷包岛在哪里的?荷包岛有什么好玩的?、
没有评论:
发表评论