责任链模式
模式定义:
为请求创建了一个接收者对象的链。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| public class ChainOfResponsibility { public static void main(String[] args) {
AbstractHandler handler1 = new ConcreteHandler1(); AbstractHandler handler2 = new ConcreteHandler2();
handler1.setNext(handler2); handler1.handleRequest("login");
} } abstract class AbstractHandler {
protected AbstractHandler next;
public void setNext(AbstractHandler next) { this.next = next; }
public AbstractHandler getNext() { return next; }
abstract void handleRequest(String request); }
class ConcreteHandler1 extends AbstractHandler{
@Override void handleRequest(String request) {
if (!request.equals("login")){ System.out.println("请登陆后再尝试"); return; } this.next.handleRequest(request); } }
class ConcreteHandler2 extends AbstractHandler{
@Override void handleRequest(String request) { if (!request.equals("update")){ System.out.println("请确认后更新"); return; } this.next.handleRequest(request); } }
|
应用场景:
一个请求的处理需要多个对象挡住的一个活几个协作处理。
优点:
1.亲戚呀的发送者和接受者结偶
2.可以控制执行顺序
3.符合开闭原则和单一职责原则
经典案例:
1 2
| javax.servlet.Fillter javax.servlet.FilterChain
|