借贷模式
2015-07-24 09:37
218 查看
借贷模式
http://blog.csdn.net/zl3450341/article/details/24658755
我们不需要关注Scanner怎么创建,用完以后怎么关闭。我们只要专注于业务逻辑即可。
试着比较两种调用方法,那个更加简洁?
早期用hibernate与spring集成的时候,大家写BaseDao,为了保证session在spring管控范围内,是不是写过这样的代码:
http://blog.csdn.net/zl3450341/article/details/24658755
我们不需要关注Scanner怎么创建,用完以后怎么关闭。我们只要专注于业务逻辑即可。
package newwork.loan; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; /** * Created by chin on 7/24/15. */ public class ResourceHolder { public static void main(String[] args) throws FileNotFoundException { // 需求打开一个文件输出文件中的每一行 /** * 通常的做法如下 */ // 创建file对象 File ignoreFile = new File("./.gitignore"); // 创建Scanner对象 Scanner sc = new Scanner(ignoreFile); while (sc.hasNext()) { System.out.println(sc.next()); } sc.close(); // 注意:我们要自己处理关闭的操作 /** * 借贷模式的做法 */ // 传入一个file对象,一个接口,这个接口有个doTask方法,这个方法需要的参数是Scanner // Scanner是桥梁 withScanner(new File("./.gitignore"), new TaskHandler() { @Override public void doTask(Scanner scanner) { while (scanner.hasNext()) { System.out.println(scanner.next()); } } }); } public static void withScanner(File file, TaskHandler handler) throws FileNotFoundException { // 根据传入的file对象,创建scanner Scanner scanner = new Scanner(file); try { // 把scanner对象传到handler对象的doTask方法中 handler.doTask(scanner); } finally { // 关闭scanner scanner.close(); } // 注意调用withScanner方法的地方就不用处理关闭的操作了,更加便捷 // 外部调用的地方也不用try-catch了 } public interface TaskHandler { void doTask(Scanner scanner); //doTask方法接受scanner参数,如何理解 } }
试着比较两种调用方法,那个更加简洁?
早期用hibernate与spring集成的时候,大家写BaseDao,为了保证session在spring管控范围内,是不是写过这样的代码:
public List findByPage(final String hql,final int offset,final int pageSize){ List list = getHibernateTemplate().executeFind( new HibernateCallback(){ public Object doInHibernate(Session session){ List result = session.createQuery(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }
相关文章推荐
- selector xml文件选择器失效
- Git 常用命令整理
- 图像处理------简单数字水印 - 文字轧花效果
- JDK环境变量配置
- 图像处理------简单数字水印 - 文字轧花效果 分类: 视频图像处理 2015-07-24 09:37 24人阅读 评论(0) 收藏
- 黑马程序员——Java基础-面向对象
- JAVA使用爬虫抓取网站网页内容的方法
- Oracle 删除重复数据只留一条
- Wildcard Matching
- Java Socket编程
- JS写的排序算法演示
- Java语言系列03——基本数据类型
- 图像处理------应用卷积一实现噪声消去
- nyoj--88汉诺塔(一)(快速幂)
- Let’s Rock & Roll ——程序员的音乐节 有同行的吗
- ActiveMQ搭建
- CSS3变形记(上):千变万化的Div
- python 例子1
- 关于iOS7 上下黑条解决办法
- SQL---having