1.File类中的策略模式:
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}
该方法运行流程:
此时的File是一个文件夹:File file=new File(“d:\”);
1.list()列出该文件夹下所有的文件(文件或文件夹,不递归列出)
2.遍历第一步得到的文件数组,FilenameFilter的accept(this,names[i])方法判断是否过滤
3.得到过滤出的文件数组
而 FilenameFilter接口的accept(File dir, String name)方法就是策略方法,dir是目录,当传入this,this代表调用list(FilenameFilter filter)的File实例。
策略模式的体现:用户自定义实现accept方法,制定对name的过滤规则