对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧!
责任链定义
使多个对象都有机会处理请求,避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这个链传递到该请求,直到有一个对象能处理为止。
责任链模式涉及到的角色
抽象处理者(Handler)角色:定义出一个处理请求的接口。
具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择处理请求,或者将请求传给另一个具体处理者(ConcreteHandler)。
责任链使用最多的地方就是:基层-》组长-》主管-》经理-》董事长-》…, 类似于这种从属关系,他们组成一个责任链,依次向上级发送请求。不过体现不了责任链的灵活性,责任链的结构可以修改,进行越级报告。
上班总是无聊的,外面的时间总是充满诱惑,于是开启了我的请假旅途。
但是请假很麻烦,流程我倒是不用管,直接把请求交给组长。
package com.example.designpattern.ChainOfResponsibilityPattern;
/**
* 组长
* <p>
* 组长只能处理1天的请假请求。
*/
public class CaptainConcreteHandler extends Handler {
@Override
public String handlerRequest(int days) {
if (days <= 1) {
return "组长批准";
}
//处理不了,传递给另一个具体处理者(ConcreteHandler)
return superHandler.handlerReque