您的位置:首页 > 移动开发 > Android开发

<设计模式17>责任链模式

2016-09-27 23:32 375 查看
责任链模式(Chain of Responsibility)

责任链模式就如通一个锁链一样,一个节点连着一个节点,每个节点就是一个对象,有着不同的处理逻辑。

使用场景:

多个对象可以处理同一个请求,但具体由哪个处理则在运行时动态决定。

动态的指定一组对象,来按照顺序来链式般的按顺序处理请求。

处理方法的接口IHandler:

public interface IHandler {
void handlerRequest();
}


抽象处理者AbstractHandler:

提供get set方法,用于实现一个”链式“的结构,使一个请求可以按照这个”链“传递下去。

public abstract class AbstractHandler {
private IHandler handler;

public IHandler getHandler() {
return handler;
}

public void setHandler(IHandler handler) {
this.handler = handler;
}

}
具体处理者ConcreteHandler:

我们先通过set方法来设置这个责任链。在处理方法中,来获得这个”链“节点,以此处理。这里的handlerRequest是责任链实现的关键,有点递归的思想在其中

public class ConcreteHandler extends AbstractHandler implements IHandler {

String name;

public ConcreteHandler(String name) {
this.name = name;
}

@Override
public void handlerRequest() {
if(getHandler() != null){
System.out.println(name);
getHandler().handlerRequest();
}

}

}
使用测试:

public class ChainTest {
public static void main(String[] args) {
ConcreteHandler handler1 = new ConcreteHandler("handler1");
ConcreteHandler handler2 = new ConcreteHandler("handler2");
ConcreteHandler handler3 = new ConcreteHandler("handler3");
<span style="color:#ff0000;">handler1.setHandler(handler2);
handler2.setHandler(handler3);</span>
handler1.handlerRequest();
}
}


结果:

handler1
handler2

上面是责任链模式的基本使用模板,我们在具体使用的时候可以实现不同的AbstractHandler来链式处理请求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 设计模式 android