打字猴:1.700464585e+09
1700464585
1700464586 Handler handler1=new ConcreteHandler1();
1700464587
1700464588 Handler handler2=new ConcreteHandler2();
1700464589
1700464590 Handler handler3=new ConcreteHandler3();
1700464591
1700464592 //设置链中的阶段顺序1—>2—>3
1700464593
1700464594 handler1.setNext(handler2);
1700464595
1700464596 handler2.setNext(handler3);
1700464597
1700464598 //提交请求,返回结果
1700464599
1700464600 Response response=handler1.handlerMessage(new Request());
1700464601
1700464602 }
1700464603
1700464604 }
1700464605
1700464606 在实际应用中,一般会有一个封装类对责任模式进行封装,也就是替代Client类,直接返回链中第一个处理者,具体链的设置不需要高层次模块关系,这样,更简化了高层次模块的调用,减少模块间的耦合,提高系统的灵活性。
1700464607
1700464608
1700464609
1700464610
1700464611 设计模式之禅 [:1700453988]
1700464612 设计模式之禅 16.3 责任链模式的应用
1700464613
1700464614 16.3.1 责任链模式的优点
1700464615
1700464616 责任链模式非常显著的优点是将请求和处理分开。请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌(例如在J2EE项目开发中,可以剥离出无状态Bean由责任链处理),两者解耦,提高系统的灵活性。
1700464617
1700464618
1700464619
1700464620
1700464621 设计模式之禅 16.3.2 责任链模式的缺点
1700464622
1700464623 责任链有两个非常显著的缺点:一是性能问题,每个请求都是从链头遍历到链尾,特别是在链比较长的时候,性能是一个非常大的问题。二是调试不很方便,特别是链条比较长,环节比较多的时候,由于采用了类似递归的方式,调试的时候逻辑可能比较复杂。
1700464624
1700464625
1700464626
1700464627
1700464628 设计模式之禅 16.3.3 责任链模式的注意事项
1700464629
1700464630 链中节点数量需要控制,避免出现超长链的情况,一般的做法是在Handler中设置一个最大节点数量,在setNext方法中判断是否已经是超过其阈值,超过则不允许该链建立,避免无意识地破坏系统性能。
1700464631
1700464632
1700464633
1700464634
[ 上一页 ]  [ :1.700464585e+09 ]  [ 下一页 ]