责任链模式
定义:为请求来去创建一个接受此次请求的链
假如我们要审核一片文章,我们需要通过不同部门层层进行审核。
–审核:审核员 科长 主任 部长 --发布(需要层层审核)
例如:我们发布一篇文章,需要审核他的内容、标题、图片、音频是否存在
- 先定义文章类(Artical.java) --里面写文章的属性内容,构造方法以及get、set方法
- 定义抽象检查类(Check.java),让子类去继承这个类并且重写检查的抽象方法
- 审核内容、标题、图片、音频的子类去继承抽象检查类(Check.java)
- 测试审核功能是否能用
1.Artical.java—文章类
public class Artical {
//定义检查文章的标题、开头、图片、音频的属性
private String title;
private String content;
private String image;
private String video;
Artical(String title){
this.title=title;
}
//get、set方法获取、设置
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getVideo() {
return video;
}
public void setVideo(String video) {
this.video = video;
}
public String getTitle() {
return title;
}
}
2.Check.java—抽象检查类
public abstract class Check {
protected Check check;//只能由子类去访问
public void setNextCheck(Check ck){
this.check=check;
}
//检查不同内容,由子类去完成
public abstract void checkType(Artical a);
}
3.子类实现抽象方法Check.java
TitleCheck.java
public class TitleCheck extends Check{
@Override
public void checkType(Artical a) {
if(a.getTitle()!=null){
System.out.println("标题内容存在,审核通过,继续往下审核。");
if(check!=null){
check.checkType(a);
}
}else{
System.out.println("标题内容为空,返回修改");
}
}
}
ContentCheck.java
public class ContentCheck extends Check{
@Override
public void checkType(Artical a) {
if(a.getContent()!=null){
System.out.println("文章内容存在,审核通过,继续往下审核。");
if(check!=null){
check.checkType(a);
}
}else{
System.out.println("文章内容为空,返回修改");
}
}
}
ImageCheck.java
public class ImageCheck extends Check{
@Override
public void checkType(Artical a) {
if(a.getImage()!=null){
System.out.println("图片内容存在,审核通过,继续往下审核。");
if(check!=null){
check.checkType(a);
}
}else{
System.out.println("图片内容为空,返回修改");
}
}
}
VideoCheck.java
public class VideoCheck extends Check{
@Override
public void checkType(Artical a) {
if(a.getVideo()!=null){
System.out.println("音频内容存在,审核通过,继续往下审核。");
if(check!=null){
check.checkType(a);
}
}else{
System.out.println("音频内容为空,返回修改");
}
}
}
4.测试是否能够审核(Test.java)
public class Test {
public static void main(String[] args) {
Artical a = new Artical("林xx来到广州华软学院就读");
a.setContent("很有气质");//添加内容
a.setImage("1.jpg");//添加照片
Check t = new TitleCheck();
Check c = new ContentCheck();
Check i = new ImageCheck();
Check v = new VideoCheck();
//各个部分检查是否存在对应的内容
t.checkType(a);
c.checkType(a);
i.checkType(a);
v.checkType(a);
}
}
测试结果: