最近学习到设计模式,现总结个人学习备责任链模式内容【注重的是每一个对象对其下个对象的引用】。
上一篇:Java设计模式-备忘录模式
定义
对象由每一个对象对其下家的引用而连接起来形成一条链,即责任链。职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。
优缺点
优点
- 简化了对象。使得对象不需要知道链的结构。【链中的每一个节点不需要知道其他节点的内部形态】
- 增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。
- 增加新的请求处理类很方便。【链条上添加节点,仅处理自己的逻辑即可】
缺点
- 不能保证请求一定被接收。【每一个节点负责行为,可能一个类的行为出错整个链条崩溃】
- 系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。
实现
代码
角色:
- 链条节点抽象类:定义了抽象行为,以及定义了存放链的下一个节点的引用【类似指针指向下一个节点】。
- 具体节点:对抽象行为的实现。
/**链条节点的抽象类
* 链的关键记录链的下一个人,以及执行链的行为
* @author cc百川
*/
public abstract class Chain {
Chain nextnode;//存储下一个节点
String nodename;//节点名称
public Chain( String nodename) {
this.nodename = nodename;
}
public Chain setNextNode(Chain nextnode) {
this.nextnode = nextnode;
return this;
}
public abstract void doChain(User user);
}
/** 乡村游医 【假定级别】
* @author cc百川
*/
class VillageDoctor extends Chain{