Режим стратегии (обратный вызов)

/ **
 * 
 * /
пакет com.zachary.io.util;

импорт java.io.File;
импорт java.io.IOException;

/ **
 * @Author Zachary.Zheng
 * @Version 1,0
 * @Date 2019 Нянь 11 Юэ 9 Ri
 * /
общественный класс ProcessFiles {
	/ **
	 * Определение интерфейса функции обратного вызова
	 * Осознайте, когда вы звоните
	 * @Author Zachary.Zheng
	 * @Version 1,0
	 * @Date 2019 Нянь 11 Юэ 9 Ri
	 * /
	открытый интерфейс Стратегия {
		недействительный процесс (файл File);
	}
	частная стратегия Стратегии;
	частная строка внутр;
	общественные ProcessFiles (стратегия Стратегии, String внутр) {
		супер();
		this.strategy = стратегия;
		this.ext = внутр;
	}
	общественные ProcessFiles () {
		супер();
	}

	общественного недействительными начала (String [] арг) {
		пытаться {
			если (args.length == 0) {
				processDirectoryTree (новый (File) "");
			} Еще {
				для (String арг: арг) {
					Файл fileArg = новый файл (ARG);
					если (fileArg.isDirectory ()) {
						processDirectoryTree (fileArg);
					} Еще {
						если (! arg.endsWith ( "" + вн)) {
							Arg + = "" + Внутр;
						}
						// Функция обратного вызова
						strategy.process (новый файл (Arg) .getCanonicalFile ());
					}
				}
			}
		} Задвижка (Исключение е) {
			// TODO: Ручка исключения
		}
	}
	общественного недействительный processDirectoryTree (корневой файл) бросает IOException {
		для (файл: ". * \\" Directory.walk (root.getAbsolutePath (), + вн)) {
			// Функция обратного вызова
			strategy.process (file.getCanonicalFile ());
		}
	}
	государственной статической силы основных (String [] арг) {
		новые ProcessFiles (новый ProcessFiles.Strategy () {
			// Функция обратного вызова
			общественного недействительный процесс (файл File) {
				System.out.println (файл);
			}
		}, "Java"). Начать (арг) ;;
	}
}
/ * Выход: (образец)
E: \\ javaBaseLearn \\ IOStream \ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ Directory.java
E: \\ javaBaseLearn \\ IOStream \\ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ DirList.java
E: \\ javaBaseLearn \\ IOStream \\ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ DirList2.java
E: \\ javaBaseLearn \\ IOStream \\ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ DirList3.java
E: \\ javaBaseLearn \\ IOStream \\ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ PPrint.java
E: \\ javaBaseLearn \\ IOStream \\ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ ProcessFiles.java
E: \\ javaBaseLearn \\ IOStream \\ WORKSPACE \\ ява-ю-поток \\ ЦСИ \\ ком \\ Захари \\ ю \\ Util \\ TreeInfo.java 
* ///: ~

  

рекомендация

отwww.cnblogs.com/zhongli1/p/11828238.html