避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止
public class ChainOfResponsibility_Main {
public static void main(String[] args) {
Support no_support = new Support() {
@Override
protected boolean resolve(Integer integer) {
return false;
}
};
Support support_1 = new Demo1_Support();
Support support_2 = new Demo2_Support();
no_support.next(support_1).next(support_2);
no_support.support(2);
}
}
abstract class Support{
private Support next;
public Support next(Support support){
this.next = support;
return this.next;
}
protected abstract boolean resolve(Integer integer);
//实现链式调用
public final void support(Integer integer){
if (resolve(integer)){
System.out.println(this.getClass().getName() + "---处理成功");
}else if (next != null){
next.support(integer);
}else {
System.out.println("无支持者");
}
}
}
class Demo1_Support extends Support{
@Override
protected boolean resolve(Integer integer) {
if (integer == 1){
System.out.println("Demo1_Support...处理了请求...");
return Boolean.TRUE;
}
return Boolean.FALSE;
}
}
class Demo2_Support extends Support{
@Override
protected boolean resolve(Integer integer) {
if (integer == 2){
System.out.println("Demo2_Support...处理了请求...");
return Boolean.TRUE;
}
return Boolean.FALSE;
}
}```