1 概念
1 定义
责任链模式为请求创建了一个接收者对象的链。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
类型:行为型
2 应用场景
3 优缺点
优点:
缺点:
2 代码实现
场景:发布一篇文章后,内容审查者审查内容,审查通过了后,视频审查者审查视频
1 2 3 4 5 6
| @Data public class Article { private String name; private String content; private String video; }
|
1 2 3 4 5 6 7 8
| public abstract class Approver { protected Approver approver;
public void setNextApprover(Approver approver){ this.approver = approver; } public abstract void check(Article article); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class ContentApprover extends Approver { @Override public void check(Article article) { if(StringUtils.isNotEmpty(article.getContent())){ System.out.println(article.getName()+"内容合规,批准"); if(approver != null){ approver.check(article); } }else{ System.out.println(article.getName()+"内容不合规,不批准,流程结束"); return; } } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class VideoApprover extends Approver{ @Override public void check(Article article) { if(StringUtils.isNotEmpty(article.getVideo())){ System.out.println(article.getName()+"视频内容合规,批准"); if(approver != null){ approver.check(article); } }else{ System.out.println(article.getName()+"视频内容不合规,不批准,流程结束"); return; } } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Test { public static void main(String[] args) { Approver contentApprover = new ContentApprover(); Approver videoApprover = new VideoApprover();
Article article = new Article(); article.setName("Java设计模式精讲"); article.setContent("Java设计模式精讲的内容"); article.setVideo("Java设计模式精讲的视频");
contentApprover.setNextApprover(videoApprover);
contentApprover.check(article); } }
|