您的位置:首页 > 其它

借贷模式

2015-07-24 09:37 218 查看
借贷模式
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: