责任链模式 (ChainOfResponsibility)
目的: 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止
优点:
1.降低耦合度,它将请求的发送与接收解耦
2.简化了对象,使得对象不需要知道链的结构
3.增强给对象指派职责的灵活性
4.增加新的请求处理类很方便
缺点:
1.不能保证请求一定被接收
2.系统性能将受到一定影响,可能造成循环调用
3.不容易观察运行时的特征
使用场景:
01.有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时自动确定
02.在不明确指定接收者的情况下,向多个对象中的一个提交一个请求
03.可动态指定一组对象处理请求
实现(参考)
现在创建抽象类AbstractLogger ,带有详细的日志记录级别,创建三种类型的记录器,都扩展了 AbstractLogger,每个记录器消息的级别是否属于自己的级别,如果是,则打印,否则传递给下一个记录器