责任链模式

来源:互联网 发布:淘宝上代购药品 编辑:程序博客网 时间:2024/06/08 00:38

前言

继续补假期的任务

责任链模式

基本结构

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树的处理

原创粉丝点击