责任链模式
责任链模式即使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链并沿着这条链传递该请求,直到有一个对象处理它为止,这就是一种责任链。此外,责任链模式也可以由多个处理类处理同一个请求,这也是一种责任链。
责任链模式示例代码
下面代码实现了一个简单的责任链模式。
Handler.java
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(int request);
}
ConcreteHandlerA.java
public class ConcreteHandlerA extends Handler {
@Override
public void handleRequest(int request) {
System.out.println("A进行处理");
if (successor != null) {
successor.handleRequest(request);
}
}
}
ConcreteHandlerB.java
public class ConcreteHandlerB extends Handler {
@Override
public void handleRequest(int request) {
System.out.println("B进行处理");
if (successor != null) {
successor.handleRequest(request);
}
}
}
ConcreteHandlerC.java
public class ConcreteHandlerC extends Handler {
@Override
public void handleRequest(int request) {
System.out.println("C进行处理");
if (successor != null) {
successor.handleRequest(request);
}
}
}
Main.java
public class Main {
public static void main(String[] args) {
Handler handlerA = new ConcreteHandlerA();
Handler handlerB = new ConcreteHandlerB();
Handler handlerC = new ConcreteHandlerC();
handlerA.setSuccessor(handlerB);
handlerB.setSuccessor(handlerC);
handlerA.handleRequest(1);
}
}
上述代码中,我们把一个int
类型的数字作为请求,在A、B、C处理器中采用了链式处理。
代码运行结果如下图。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。