读书笔记 仅供参考
简述
职责链模式将多个对象组成一条职责链,然后按照他们在职责链上的顺序一个个找出到底应该谁负责处理。也是推卸责任的结构。
角色和 UML
Handler
定义了处理请求的接口(API),该角色知道下一个处理者是谁,如果自己无法处理,将请求转发给下一个。
ConcreteHandler
处理请求的具体角色
Client
向第一个 ConcreteHandler 角色发送请求的角色。
UML
例子
例程是一个不同人解决问题的程序,问题具有编号,而每一种处理对象都只能解决特定编号的问题,比如:都不能解决、解决小于特定数的、解决等于特定数的和解决奇数的。
//问题类,具有问题编号,编号是职责链处理的依据
public class Trouble {
private int number;
public Trouble(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
@Override
public String toString() {
return "[Trouble " + number + "]";
}
}
//解决问题德抽象类
public abstract class Support {
//实例的名字
private Strin