模板方法和接口参数的联合使用

在开发中,我们经常要进行网络请求,并且对返回的数据进行处理。但是不同的请求返回的数据不同,因此对数据的处理也不同。如何如何设计解析数据的类型或者方法成了一个难点。下面使用模板方法和接口参数来演示一下  : 


[java]  view plain copy
  1. package com.umeng.dp.templatemethod;  
  2.   
  3. /** 
  4.  * @Copyright: Umeng.com, Ltd. Copyright 2011-2015, All rights reserved 
  5.  * @Title: JdbcQueryTemplate.java 
  6.  * @Package com.umeng.dp.templatemethod 
  7.  * @Description: 这种设计可以用于网络请求中(以及类似场景),服务器返回的不同数据进行不同的处理,比如json的解析、XML解析等 
  8.  * @author Honghui He 
  9.  * @version V1.0 
  10.  */  
  11.   
  12. public class NetworkTemplate {  
  13.   
  14.     public <T> T httpRequrst(String url, HttpHandler<T> handler) {  
  15.         // 添加请求参数  
  16.         addParams();  
  17.         // 常规情况下返回的是ResultSet,这里模拟为String  
  18.         String result = doRequest(url);  
  19.         return handler.handle(result);  
  20.     }  
  21.   
  22.   
  23.     /** 
  24.      * @Title: getJdbcConnection 
  25.      * @Description: 获取jdbc连接 
  26.      * @throws 
  27.      */  
  28.     private void addParams() {  
  29.         System.out.println("参数1");  
  30.         System.out.println("参数2");  
  31.         System.out.println("参数3");  
  32.         System.out.println("参数4");  
  33.     }  
  34.   
  35.     /** 
  36.      * @Title: query 
  37.      * @Description: 假设返回的是符合条件的数据 
  38.      * @param sql 
  39.      * @return 
  40.      * @throws 
  41.      */  
  42.     private String doRequest(String url) {  
  43.         System.out.println("执行http请求,并且返回json数据");  
  44.         // 比如这里返回json数据(模拟), 则要有不同的Handler来处理这些不同的数据类型或者是XML解析  
  45.         return "王老五 : 12000;";  
  46.     }  
  47.   
  48.   
  49.     /** 
  50.      * @ClassName: QueryHandler 
  51.      * @Description: 
  52.      *      查询结果处理器 
  53.      *  
  54.      * @author Honghui He   
  55.      * @param <T>  处理以后的返回结果 
  56.      */  
  57.     public interface HttpHandler<T> {  
  58.         public T handle(String result);  
  59.     }  
  60. }  


测试代码 : 

[java]  view plain copy
  1. package com.umeng.dp.templatemethod;  
  2.   
  3. import com.umeng.dp.templatemethod.NetworkTemplate.HttpHandler;  
  4.   
  5. /** 
  6.  * @Copyright: Umeng.com, Ltd. Copyright 2011-2015, All rights reserved 
  7.  * @Title: Test.java 
  8.  * @Package com.umeng.dp.templatemethod 
  9.  * @Description: 
  10.  * @author Honghui He 
  11.  * @version V1.0 
  12.  */  
  13.   
  14. public class Test {  
  15.   
  16.     public static void main(String[] args) {  
  17.   
  18.         // JDBC例子, 使用范型了的QueryHandler避免子类膨胀  
  19.         NetworkTemplate http = new NetworkTemplate();  
  20.         // 查询存款超过10000的用户  
  21.         http.httpRequrst("select * form userdb where money > 10000"new HttpHandler<Void>() {  
  22.   
  23.             @Override  
  24.             public Void handle(String result) {  
  25.                 String[] data = result.split(":");  
  26.                 if (data.length > 0) {  
  27.                     System.out.println(data[0] + "有" + data[1]);  
  28.                 }  
  29.                 return null;  
  30.             }  
  31.   
  32.         });  
  33.     }  
  34.   
  35. }  


输出如下 : 

参数1
参数2
参数3
参数4
执行http请求,并且返回json数据
王老五 有 12000;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]是一个关于有向图的强连通分量的算法模板使用了深度优先搜索(DFS)来标记各个点的编号,并通过反向图进行第二遍DFS来找出连通分量。这个模板可以用来解决一些与有向图强连通分量相关的问题。 引用\[2\]是一个关于Dijkstra算法的模板,用于求解单源最短路径问题。它使用了优先队列来优化算法的时间复杂度,通过不断更新节点的最短路径长度来找到最短路径。 关于acm模板的整理和使用方法,可以按照以下步骤进行: 1. 首先,根据需要选择合适的算法模板,比如上述提到的强连通分量算法模板或Dijkstra算法模板。 2. 将选定的算法模板复制到你的代码中,并根据具体问题进行适当的修改和调整。 3. 确保你的代码中包含了所需的头文件和全局变量的定义。 4. 根据具体问题的输入格式,编写相应的输入代码,将输入数据存储到合适的数据结构中。 5. 调用选定的算法函数,传入合适的参数,进行计算。 6. 根据具体问题的输出格式,编写相应的输出代码,将计算结果输出。 7. 编译和运行你的代码,检查是否得到了正确的结果。 总结起来,整理和使用acm模板方法包括选择合适的算法模板、修改和调整代码、编写输入和输出代码、调用算法函数进行计算、编译和运行代码。根据具体问题的要求,可以灵活地使用不同的算法模板来解决问题。 #### 引用[.reference_title] - *1* *2* [ACM 模板整理](https://blog.csdn.net/Lin_ZR/article/details/78976281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值