每个请求处理的基类 /** * @param 上一个处理环节的结果类型 * @param 当前处理环节的结果类型 * 使用示例: * Handler handler1 = new Handler1(); * Handler handler2 = new Handler2(); * handler1.nextHandler = ha
/** * @paramResponsibilityPattern.rar ResponsibilityPattern.rar上一个处理环节的结果类型 * @param 当前处理环节的结果类型 * 使用示例: * Handler handler1 = new Handler1(); * Handler handler2 = new Handler2(); * handler1.nextHandler = handler2; * handler1.handle(); * @author baopengjian * 每一个环节处理的模板 (责任链模式、模板模式 ) */ public abstract class BaseHandler { /** * 下一个处理环节 */ public BaseHandler nextHandler; /** * 上一个处理环节的结果 */ private T result; /** * 通过第一个Handler的该方法,启动整个链式处理 */ public void handle() { request(null, new CallBack () { @Override public void onSuccess(T result) { BaseHandler.this.result = result; handleSucess(null,result); } @Override public void onFail(T result) { BaseHandler.this.result = result; handleFail(null,result); } }); } /** * 启动下一环节的处理,并传入当前处理结果 * @param lastResult */ protected void handle(final M lastResult) { request(lastResult, new CallBack () { @Override public void onSuccess(T result) { BaseHandler.this.result = result; handleSucess(lastResult,result); } @Override public void onFail(T result) { BaseHandler.this.result = result; handleFail(lastResult,result); } }); } /** * 如果需要传递到下一环节,该方法需要在request中当处理结束后被调用 */ protected void handleNext(){ if(nextHandler != null){ nextHandler.handle(result); } } /** * 当前环节处理成功 */ public abstract void handleSucess(M lastResult,T result); /** * 当前环节处理失败 * @param lastResult * @param result */ public abstract void handleFail(M lastResult,T result); /** * 具体处理逻辑的抽象方法 * @param lastResult * @param callBack 需要在实现中手动调用 callBack.onSucess和 callBack.onFail */ public abstract void request(M lastResult,CallBack callBack); /** * 处理结果的回调 * @param 结果类型 */ public interface CallBack { void onSuccess(T result); void onFail(T result); } }