• 责任链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求组的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

  • 代码:

  1. //定义一个base处理者
  2. public abstract class Handler {
  3. protected Handler handler;
  4. public void setHandler(Handler handler) {
  5. this.handler = handler;
  6. }
  7. public abstract void handleRequest();
  8. }
  9. //定义处理者1
  10. public class FirstHandler extends Handler {
  11. @Override
  12. public void handleRequest() {
  13. if (true) {
  14. doSomething();
  15. } else if (Objects.nonNull(handler)) {
  16. handler.handleRequest();
  17. }
  18. }
  19. }
  20. //定义处理者2
  21. public class SecondHandler extends Handler {
  22. @Override
  23. public void handleRequest() {
  24. if (true) {
  25. doSomething();
  26. } else if (Objects.nonNull(handler)) {
  27. handler.handleRequest();
  28. }
  29. }
  30. }
  31. //定义处理者3
  32. public class ThirdHandler extends Handler {
  33. @Override
  34. public void handleRequest() {
  35. if (true) {
  36. doSomething();
  37. } else if (Objects.nonNull(handler)) {
  38. handler.handleRequest();
  39. }
  40. }
  41. }
  42. //入口处理方法
  43. public void method(){
  44. //定义责任链条
  45. Handler firstHandler = new FirstHandler();
  46. Handler secondHandler = new SecondHandler();
  47. Handler thirdHandler = new ThirdHandler();
  48. firstHandler.setHandler(secondHandler);
  49. secondHandler.setHandler(thirdHandler);
  50. //传递任务
  51. firstHandler.handleRequest();
  52. }
  • 通过上述代码,可以看出,定义了责任链条之后,那么就会给满足条件的handler处理请求。

版权声明:本文为lycsmzl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lycsmzl/p/13402310.html