Java设计模式作业-责任链模式

Java设计模式作业-责任链模式:Web过滤器

文章目录

前言

一、类图

二、代码及测试结果

1.Trouble类

2.Support类

3.CharSupport类

4.TypeTransformSupport类

5.TypeCheckSupport类

6.Test类


前言

        在某 Web 框架中采用职责链模式来组织数据过滤器,不同的数据过滤器提供了不同的功能,例如字符编码转换过滤器、数据类型转换过滤器、数据校验过滤器等,可以将多个过滤器连接成一一个过滤器链,进而对数据进行多次处理。根据以上描述,绘制对应的类图并编程模拟实现。

一、类图

 

二、代码及测试结果

1.Trouble类

public class Trouble {
    private int number;//定义trouble的类型,对应过滤器类型
    public Trouble(int number){
        this.number = number;
    }
    public int getNumber(){
        return this.number;
    }
    public String toString(){
        switch (number){
            case 1: return "[Trouble " + number + " CheckTrouble]";
            case 2: return "[Trouble " + number + " TypeTransformTrouble]";
            case 3: return "[Trouble " + number + " TypeCheckTrouble]";
            default: return "No such trouble";
        }
    }
}

2.Support类

public abstract class Support {
    private String name;
    private Support next;
    public Support(String name){
        this.name = name;
    }
    public Support setNext(Support next){
        this.next = next;
        return next;
    }
    public final void support(Trouble trouble){
        if(resolve(trouble)){
            done(trouble);
        }else if(next != null){
            next.support(trouble);
        }else {
            fail(trouble);
        }
    }
    public String toString(){
        return "[" + name + "]";
    }
    protected abstract boolean resolve(Trouble trouble);
    protected void done(Trouble trouble){
        System.out.println(trouble + " is resolved by " + this + ".");
    }
    protected void fail(Trouble trouble){
        System.out.println(trouble + " cannot be resolved");
    }
}

3.CharSupport类

public class CharSupport extends Support{
    private int typeNum = 1;
    public CharSupport(String name) {
        super(name);
    }

    @Override
    protected boolean resolve(Trouble trouble) {
        if(trouble.getNumber() == typeNum){
            return true;
        }else {
            return false;
        }
    }
}

4.TypeTransformSupport类

public class TypeTransformSupport extends Support{
    private int typeNum = 2;
    public TypeTransformSupport(String name) {
        super(name);
    }

    @Override
    protected boolean resolve(Trouble trouble) {
        if(trouble.getNumber() == typeNum){
            return true;
        }else {
            return false;
        }
    }
}

5.TypeCheckSupport类

​
public class TypeCheckSupport extends Support{
    private int typeNum = 3;
    public TypeCheckSupport(String name) {
        super(name);
    }

    @Override
    protected boolean resolve(Trouble trouble) {
        if(trouble.getNumber() == typeNum){
            return true;
        }else {
            return false;
        }
    }
}

​

6.Test类

public class Test {
    public static void main(String[] args) {
        Support charSupport = new CharSupport("charSupport");
        Support typeTransformSupport = new TypeTransformSupport("typeTransformSupport");
        Support typeCheckSupport = new TypeCheckSupport("typeCheckSupport");

        charSupport.setNext(typeTransformSupport).setNext(typeCheckSupport);

        for(int i = 1; i <= 4; i++){
            charSupport.support(new Trouble(i));
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值