责任链模式
对处理数据进行链式处理
示例
接口
public interface Dispatch {
public void check(int amount);
public void setNextDispatch(Dispatch dispatch);
}
三个实现类
public class Cost50Dispatch implements Dispatch {
private Dispatch dispatch;
@Override
public void check(int amount) {
if (amount > 50) {
System.out.println("当前金额>50");
} else {
dispatch.check(amount);
}
}
@Override
public void setNextDispatch(Dispatch dispatch) {
this.dispatch = dispatch;
}
}
public class Cost30Dispatch implements Dispatch {
Dispatch dispatch;
@Override
public void check(int amount) {
if (amount > 30) {
System.out.println("30<金额金额<50");
} else {
this.dispatch.check(amount);
}
}
@Override
public void setNextDispatch(Dispatch dispatch) {
this.dispatch = dispatch;
}
}
public class Cost10Dispatch implements Dispatch {
Dispatch dispatch;
@Override
public void check(int amount) {
System.out.println("amount<10");
}
@Override
public void setNextDispatch(Dispatch dispatch) {
this.dispatch = dispatch;
}
}
主函数
public class TestMain {
public static void main(String[] args) {
Dispatch dispatch = new Cost10Dispatch();
Dispatch dispatch1 = new Cost30Dispatch();
Dispatch dispatch2 = new Cost50Dispatch();
dispatch2.setNextDispatch(dispatch1);
dispatch1.setNextDispatch(dispatch);
dispatch2.check(60);
dispatch2.check(40);
dispatch2.check(5);
}
}
总结
- 当前处理器能够处理的话就不用传递到下一个处理器了
- 这个模式可以变形,比如多个处理器之间没有顺序,每个处理器可以选自己感兴趣的数据处理,各个处理器之间互不影响