当前位置 : 主页 > 编程语言 > c++ >

责任链和模板模式封装连续请求

来源:互联网 收集:自由互联 发布时间:2021-06-30
每个请求处理的基类 /** * @param 上一个处理环节的结果类型 * @param 当前处理环节的结果类型 * 使用示例: * Handler handler1 = new Handler1(); * Handler handler2 = new Handler2(); * handler1.nextHandler = ha
每个请求处理的基类
/**
 * @param 
 
   上一个处理环节的结果类型
 * @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); } }
           
          
         
        
       
      
     
    
   
  
 
ResponsibilityPattern.rar ResponsibilityPattern.rar
上一篇:win7 开启wifi
下一篇:Self numbers
网友评论