一、什么是责任链模式?
责任链模式是指多个对象,能够依次的对传递过来的信息进行处理,并传递给下一个对象,直到处理完毕。
二、责任链有哪些角色?
- 抽象处理者角色:定义一个处理请求的接口,如果需要,接口可以定义出一个方法来设定和返回下一个处理者
- 具体处理者角色:具体处理者接收到请求后,可以选择将请求处理掉,或者将请求传递给下一个处理者
三、代码详解:
抽象类:
public abstract class Handler { /** * 下一个处理者 */ private Handler target; public Handler getTarget() { return target; } public void setTarget(Handler target) { this.target = target; } public abstract void process(); }
具体实现者A:
public class Handler_A extends Handler { @Override public void process() { Handler handler = getTarget(); if (handler == null) { System.out.println("A处理后, 直接返回结果"); return; } else { System.out.println("A处理后,返回个下一个handler继续处理"); handler.process(); } } }
具体实现者B:
public class Handler_B extends Handler{ @Override public void process() { Handler handler = getTarget(); if (handler == null) { System.out.println("B处理后, 直接返回结果"); return; } else { System.out.println("B处理后,返回个下一个handler继续处理"); handler.process(); } } }
客户端:
public class Client { public static void main(String[] args) { Handler handlerA = new Handler_A(); Handler handlerB = new Handler_B(); handlerA.setTarget(handlerB); handlerA.process(); } }
结果打印:
A处理后,返回个下一个handler继续处理
B处理后, 直接返回结果