java回调函数 策略模式,策略模式(回调函数)

/**

*

*/

package com.zachary.io.util;

import java.io.File;

import java.io.IOException;

/**

* @author Zachary.Zheng

* @version 1.0

* @date 2019年11月9日

*/

public class ProcessFiles {

/**

* 定义回调函数接口

* 在调用时实现

* @author Zachary.Zheng

* @version 1.0

* @date 2019年11月9日

*/

public interface Strategy{

void process(File file);

}

private Strategy strategy;

private String ext;

public ProcessFiles(Strategy strategy, String ext) {

super();

this.strategy = strategy;

this.ext = ext;

}

public ProcessFiles() {

super();

}

public void start(String [] args) {

try {

if(args.length == 0) {

processDirectoryTree(new File("."));

} else {

for (String arg : args) {

File fileArg = new File(arg);

if(fileArg.isDirectory()) {

processDirectoryTree(fileArg);

} else {

if(!arg.endsWith("." + ext)) {

arg += "." + ext;

}

// 执行回调函数

strategy.process(new File(arg).getCanonicalFile());

}

}

}

} catch (Exception e) {

// TODO: handle exception

}

}

public void processDirectoryTree(File root) throws IOException {

for(File file: Directory.walk(root.getAbsolutePath(), ".*\."+ext)) {

// 执行回调函数

strategy.process(file.getCanonicalFile());

}

}

public static void main(String[] args) {

new ProcessFiles(new ProcessFiles.Strategy() {

// 回调函数

public void process(File file) {

System.out.println(file);

}

}, "java").start(args);;

}

}

/* Output: (sample)

E:\javaBaseLearn\IOStreamworkSpace\java-io-stream\src\com\zachary\io\util\Directory.java

E:\javaBaseLearn\IOStream\workSpace\java-io-stream\src\com\zachary\io\util\DirList.java

E:\javaBaseLearn\IOStream\workSpace\java-io-stream\src\com\zachary\io\util\DirList2.java

E:\javaBaseLearn\IOStream\workSpace\java-io-stream\src\com\zachary\io\util\DirList3.java

E:\javaBaseLearn\IOStream\workSpace\java-io-stream\src\com\zachary\io\util\PPrint.java

E:\javaBaseLearn\IOStream\workSpace\java-io-stream\src\com\zachary\io\util\ProcessFiles.java

E:\javaBaseLearn\IOStream\workSpace\java-io-stream\src\com\zachary\io\util\TreeInfo.java

*///:~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值