责任链模式
来源:互联网 发布:淘宝上代购药品 编辑:程序博客网 时间: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树的处理
阅读全文
0 0
- 责任链模式
- 深入浅出责任链模式
- 责任链模式
- 责任链模式
- 深入浅出责任链模式
- 责任链模式(一)
- 责任链模式(二)
- 责任链模式(三)
- 责任链模式
- java责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- c++ 责任链模式
- java责任链模式
- 责任链模式
- hibernate之注解
- Python程序设计—车万翔
- 全排列算法【非递归活动数实现】
- Android学习-认识Activity
- 课本简单程序执行
- 责任链模式
- JQuery Ajax 参数含有特殊字符
- 桌面许多快捷方式图标/文件左下角出现绿色对号小图标
- 学习机器学习前的准备
- 编译器小知识总结
- Sublime Text 3 c语言配置
- matlab 安装 cvx 和 mosek 以及 gurobi
- 关于用户的练习
- 使用idea搭建Scala 项目