责任链模式(行为型)

责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

使用场景:

  • 有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。
  • 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
  • 可动态指定一组对象处理请求。

优点:

  • 降低耦合度。它将请求的发送者和接收者解耦。
  • 简化了对象。使得对象不需要知道链的结构。
  • 增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。
  • 增加新的请求处理类很方便。

缺点:

  • 不能保证请求一定被接收。
  • 系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。
  • 可能不容易观察运行时的特征,有碍于除错。

区别:

  • 过滤器模式是结构型,是多个类(标准)有自己的过滤逻辑,对一个list进行筛选,返回结果。同一个list可以被多个类进行过滤,即用不同标准进行过滤,得到不同的结果。想得到什么结果就用什么过滤器类。
  • 责任链模式是行为型,一个请求在运行时才知道会被哪个责任类处理,但也可能一个也没处理。发送请求的客户端不关心是谁来处理,即达到了请求与处理逻辑的解耦。责任链里可以随意增删处理类,可以灵活的改变处理行为。

你可能感兴趣的:(责任链模式(行为型))