九,责任链模式

来源:互联网 发布:工业控制网络 pdf 编辑:程序博客网 时间:2024/05/17 23:27

责任链中存在的角色

抽象处理者

定义出一个处理请求的接口,如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。

具体助理者

具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家,由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。

责任链模式结构图

代码演示

抽象处理者

package com.demo.design_pattern;/** * 抽象处理者 * @author Programmer * */public abstract class Handler {    //对自身的引用    protected Handler next;    protected String name;    /**     * 设定和获取对下一家处理者     * @param next     */    public void setNext(Handler next) {        this.next = next;    }    public Handler getNext() {        return next;    }    //设置别名    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    //处理方法,调用此方法处理请求    public abstract void handle();}

具体处理者

package com.demo.design_pattern;public class ConcreteHandler extends Handler {    @Override    public void handle() {        // TODO Auto-generated method stub        if(getNext() != null){            System.out.println("请求分发到下一级处理者"+getNext().name);            getNext().handle();        }else {            System.out.println("处理者"+this.name+"已经处理了请求");        }    }}

客户端

package com.demo.design_pattern;public class Client {    static private Handler firstHander,secondHandler;    public static void main(String[] args) {        firstHander = new ConcreteHandler();        firstHander.setName("firstHandler");        secondHandler = new ConcreteHandler();        secondHandler.setName("secondHandler");        firstHander.setNext(secondHandler);        firstHander.handle();    }}
原创粉丝点击