设计模式:责任模式

发布时间:2021-10-01 23:00:31 阅读:(122)

    职责模式

    什么是责任模式

    为避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求。将这些接收对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止

    职责模式也成为责任链模式,他将请求的发送者和接收者解耦了。客户端不需要知道请求处理者的明确信息和处理的具体逻辑,甚至不需要知道链的结构,它只需要将请求进行发送即可

    设计思想

    在责任模式中我们可以随时随地增加或者更改责任人,甚至可以更改责任人的顺序,增加了系统的灵活性。但有时候可能会导致一个请求无论如何也得不到处理,他会被放置在链条末端

    设计要点

    • 请求者与请求内容:确认谁要发送请求,发送请求的对象成为请求者。请求的内容通过发送请求时的参数进行传递
    • 有哪些责任人:责任人是构成责任链的关键要素。请求的流动方向是链条中的线,而责任人则是链条上的节点,线和节点共同构成了一条链条
    • 对责任人进行抽象:真实世界中的责任人多种多样,纷繁复杂,有不同的职责和功能;但他们也有一个共同的特征——都可以处理请求。所以需要对责任人进行抽象,使他们具有责任的可传递行
    • 责任人可自由组合:责任链上的责任人可以根据业务的具体逻辑进行自由的组合和排序

    优缺点

    优点:

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

    缺点:

    • 不能保证请求一定被接收
    • 系统性能将受到一定地影响,而且在进行代码调试时不太方便,可能会造成循环调用

    应用场景

    • 有多个对象可以处理同一个请求,具体那个对象处理该请求在运行时刻自动确定
    • 请求地处理具有明显地一层层传递关系
    • 请求地处理流程和顺序需要程序运行时动态确定。
    • 常见地审批流程