职责链模式(Chain of Resposiblity)

职责链模式(Chain of Resposiblity) :使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到又一个对象处理它为止。
PS:通俗的讲是一个实体或者变量进行类之间的传递,判断类(变量)的特征key字段,直到找到能处理这个对象的类进行处理为止。缺点是也有可能遍历了整条链找不到任何一个能处理的类。

主方法

public class main {
    public static void main(String[] args) {
        Handler h1 = new HandlerImpl1();
        Handler h2 = new HandlerImpl2();
        Handler h3 = new HandlerImpl3();
        //声明责任传承关系
        h1.setSuccessor(h2);
        h2.setSuccessor(h3);

        int[] requests = new int[]{2, 5, 14, 22, 18, 3, 27, 20};
        for (int request : requests) {
            h1.HandleRequest(request);
        }
    }
}

抽象类

public abstract class Handler {
    protected Handler successor;

    public void setSuccessor(Handler successor) {//设置继任者
        this.successor = successor;
    }

    public abstract void HandleRequest(int request);
}

继任者1~3

public class HandlerImpl1 extends Handler {
    public void HandleRequest(int request) {
        if (request >= 0 && request < 10) {
            System.out.println(String.format("{%s}处理请求{%d}", getClass().getName(), request));
        } else if (successor != null) {
            successor.HandleRequest(request);
        }
    }
}
public class HandlerImpl2 extends Handler {
    public void HandleRequest(int request) {
        if (request >= 10 && request < 20) {
            System.out.println(String.format("{%s}处理请求{%d}", getClass().getName(), request));
        } else if (successor != null) {
            successor.HandleRequest(request);
        }
    }
}
public class HandlerImpl3 extends Handler {
    public void HandleRequest(int request) {
        if (request >= 20 && request < 30) {
            System.out.println(String.format("{%s}处理请求{%d}", getClass().getName(), request));
        } else if (successor != null) {
            successor.HandleRequest(request);
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 申请聚餐费用## 来考虑这样一个功能:申请聚餐费用的管理。 很多公司都有这样的福利,就是项...
    七寸知架构阅读 8,338评论 3 58
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,375评论 2 17
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,370评论 1 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,894评论 18 399