前言
继续补假期的任务
责任链模式
基本结构
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树的处理