责任链模式

前言

继续补假期的任务

责任链模式

基本结构

abstractrequest: 抽象的请求类,定义一些方法用于规定请求的一些属性

public abstract class AbstractRequest {

    public abstract int getPrice();

    public abstract void getResult(String name);

    public abstract String getName();
}

abstracthandler: 抽象的处理类,持有下一个处理类的对象,并处理处理的具体逻辑,同样规定一些处理类的一些属性

public abstract class AbstractHandler {

    public AbstractHandler nextHandler;

    public final void handleMoney(AbstractRequest request){
        if(request.getPrice()<=limit()){
            request.getResult(getName());
        }else{
            if(nextHandler !=null){
                System.out.println(getName()+"审批"+request.getName()+"不通过");
                nextHandler.handleMoney(request);
            }else{
                System.out.println("处理链断裂");
            }
        }
    }

    protected abstract int limit();

    protected abstract String getName();
}

concrete: 具体实现类,分别构建了三个请求者和三个处理者

public class WPPhoneRequest extends AbstractRequest {
    @Override
    public int getPrice() {
        return 2000;
    }

    @Override
    public void getResult(String name){
        System.out.println(getName()+"被"+name+"审批通过");
    }

    @Override
    public String getName() {
        return "WP手机";
    }
}
public class AndroidPhoneRequest extends AbstractRequest {
    @Override
    public int getPrice() {
        return 4000;
    }

    @Override
    public void getResult(String name) {
        System.out.println(getName()+"被"+name+"审批通过");
    }

    @Override
    public String getName() {
        return "android手机";
    }
}
public class IOSPhoneRequest extends AbstractRequest {
    @Override
    public int getPrice() {
        return 6000;
    }

    @Override
    public void getResult(String name) {
        System.out.println(getName()+"被"+name+"审批通过");
    }

    @Override
    public String getName() {
        return "苹果手机";
    }

}
public class Groupleader extends AbstractHandler {
    @Override
    protected int limit() {
        return 2000;
    }

    @Override
    protected String getName() {
        return "组长";
    }
}
public class DirectorLeader extends AbstractHandler {
    @Override
    protected int limit() {
        return 4000;
    }

    @Override
    protected String getName() {
        return "项目经理";
    }
}
public class BossLeader extends AbstractHandler {
    @Override
    protected int limit() {
        return 6000;
    }

    @Override
    protected String getName() {
        return "老板";
    }
}

main方法调用:

 //责任链模式测试方法
    private static void testIterator(){
        WPPhoneRequest wpPhoneRequest=new WPPhoneRequest();
        AndroidPhoneRequest androidPhoneRequest=new AndroidPhoneRequest();
        IOSPhoneRequest iosPhoneRequest=new IOSPhoneRequest();
        Groupleader groupleader=new Groupleader();
        DirectorLeader directorLeader=new DirectorLeader();
        BossLeader bossLeader=new BossLeader();
        directorLeader.nextHandler=bossLeader;
        groupleader.nextHandler=directorLeader;
        groupleader.handleMoney(wpPhoneRequest);
        groupleader.handleMoney(androidPhoneRequest);
        groupleader.handleMoney(iosPhoneRequest);
    }

输出结果:

WP手机被组长审批通过
组长审批android手机不通过
android手机被项目经理审批通过
组长审批苹果手机不通过
项目经理审批苹果手机不通过
苹果手机被老板审批通过

个人总结

android中最常见的触摸事件在view树的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值