抚州做网站,ui设计最常用的软件,做技术支持的网站有,仿牌网站安全责任链模式 每个流程或事物处理 像一个链表结构处理。场景由 多层部门审批#xff0c;问题分级处理等。下面体现的是 不同难度的问题由不同人进行解决。 设计模式#xff0c;一定要敲代码理解
传递问题实体
/*** author ggbond* date 2024年04月10日 07:48*/
public class…责任链模式 每个流程或事物处理 像一个链表结构处理。场景由 多层部门审批问题分级处理等。下面体现的是 不同难度的问题由不同人进行解决。 设计模式一定要敲代码理解
传递问题实体
/*** author ggbond* date 2024年04月10日 07:48*/
public class Question {private int level;private String detail;public Question(int level, String detail) {this.level level;this.detail 这是难度系数为String.valueOf(level):detail;}public int getLevel() {return level;}public String getDetail() {return detail;}
}责任链处理抽象
/*** author ggbond* date 2024年04月10日 07:53*/
public abstract class Handler {final static int LEVEL1 1; // 题目难度为1final static int LEVEL2 2; // 题目难度为2final static int LEVEL3 3; // 题目难度为3// 能处理的级别private int level 0;// 责任传递下一个责任人是谁private Handler nextHandler;protected String name;public Handler(int level) {this.level level;}public void setNextHandler(Handler nextHandler) {this.nextHandler nextHandler;}protected abstract void response(Question question);final void handle(Question question) {// 难度小递增处理if (question.getLevel() this.level) {this.response(question);} else {if (this.nextHandler ! null) { // 有后续环节请求传递this.nextHandler.handle(question); // 责任传递} else { // 无后续环节了无法处理System.out.print(题目难度为 question.getLevel() );System.out.println(这题目太难没有人能可以处理。);}}}
}责任链处理实体
public class Child extends Handler{public Child(String name) {super(Handler.LEVEL1);this.namename;}Overrideprotected void response(Question question) {System.out.print(我是name );System.out.println(问题难度为1question.getDetail()已经被解决);}
}public class Undergraduate extends Handler{public Undergraduate(String name) {super(Handler.LEVEL2);this.namename;}Overrideprotected void response(Question question) {System.out.print(我是name );System.out.println(问题难度为2question.getDetail()已经被解决);}
}public class Graduates extends Handler{public Graduates(String name) {super(Handler.LEVEL3);this.namename;}Overrideprotected void response(Question question) {System.out.print(我是name );System.out.println(问题难度为3question.getDetail()已经被解决);}
}测试与结果
/*** author ggbond* date 2024年04月10日 08:13*/
public class Main {public static void main(String[] args) {Question q1new Question(1,11);Question q2new Question(2,数据结构与算法);Question q3new Question(3,高等算法);Question q4new Question(4,LLM);ArrayListQuestion listnew ArrayList();list.add(q1);list.add(q2);list.add(q3); list.add(q4);Handler h1 new Child(儿童);Handler h2 new Undergraduate(大学生);Handler h3 new Graduates(研究生);h1.setNextHandler(h2);h2.setNextHandler(h3);for ( Question item: list) {h1.handle(item);}}
}我是儿童 问题难度为1这是难度系数为1:11已经被解决
我是大学生 问题难度为2这是难度系数为2:数据结构与算法已经被解决
我是研究生 问题难度为3这是难度系数为3:高等算法已经被解决
题目难度为4 这题目太难没有人能可以处理。总结
调用外部无需关心责任链是如何处理的如果要加处理对象也非常便携体现单一职责与开闭原则。
代码下载
代码下载