频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
android开发教程之责任链模式
2017-10-11 09:22:50      个评论    来源:gyl10的博客  
收藏   我要投稿

android开发教程之责任链模式。

责任链模式

基本结构

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

点击复制链接 与好友分享!回本站首页
上一篇:Android开发教程之Activity基础知识学习
下一篇:Android布局时setText 没起作用,但getText能得到值的解决方案
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站