面向对象设计模式--责任链模式

责任链模式
定义:为请求来去创建一个接受此次请求的链
假如我们要审核一片文章,我们需要通过不同部门层层进行审核。
–审核:审核员 科长 主任 部长 --发布(需要层层审核)

例如:我们发布一篇文章,需要审核他的内容、标题、图片、音频是否存在

  1. 先定义文章类(Artical.java) --里面写文章的属性内容,构造方法以及get、set方法
  2. 定义抽象检查类(Check.java),让子类去继承这个类并且重写检查的抽象方法
  3. 审核内容、标题、图片、音频的子类去继承抽象检查类(Check.java)
  4. 测试审核功能是否能用

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);
	}
}

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值