基于面向对象的思想,想想业务中哪些流程是可以组装为一个链条的
就是说会有一些相似的业务,组成的功能链条可能只是顺序会改变,或会增减链条节点,就可以用责任链模式复用代码
每一个Handler都持有下一个Handler的引用,他如果判断还有下一个Handler,就会继续往下执行
public abstract class Handler {
protected Handler successor;
public Handler(Handler successor) {
this.successor = successor;
}
public abstract void execute()
}
public class HanderOne extends Handler {
public HandlerOne(Handler successor) {
super(successor);
}
public void execute() {
System.out.println("执行功能一");
if (successor != null) {
successor.execute();
}
}
}
public class HanderTwo implements Handler {
public HandlerTwo(Handler successor) {
super(successor);
}
public void execute() {
System.out.println("执行功能二");
if (successor != null) {
successor.execute();
}
}
}
public class HanderThree implements Handler {
public HandlerThree(Handler successor) {
super(successor);
}
public void execute() {
System.out.println("执行功能三");
if (successor != null) {
successor.execute();
}
}
}
使用时,可以随意组装顺序
Handler handler3 = new HandlerThree(null);
Handler handler2 = new HandlerTwo(handler3);
Handler handler1 = new HandlerOne(handler2);
handler1.execute();