Назначение
Описывает операцию, выполняемую с каждым объектом из некоторой структуры. Паттерн Посетитель позволяет определить новую операцию, не изменяя классы этих объектов.
Использование шаблона в JDK
(примеры частично взяты с этого ресурса)
- java.nio.file.Files.walkFileTree(..., java.nio.file.FileVisitor)
----------------------------------------------------------------
-------------------java.nio.file.FileVisitor------------------
-- Код:
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class FileVisitor {
public static void main(String[] args) throws IOException {
Files.walkFileTree(
Paths.get("d:/Android/"),
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(
Path file, BasicFileAttributes attrs)
throws IOException {
System.out.println(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(
Path dir, BasicFileAttributes attrs)
throws IOException {
System.out.println(" -> DIR: " + dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(
Path dir, IOException e)
throws IOException {
if (e == null) {
System.out.println("<- DIR: " + dir);
return FileVisitResult.CONTINUE;
} else {
throw e;
}
}
});
}
}
Описывает операцию, выполняемую с каждым объектом из некоторой структуры. Паттерн Посетитель позволяет определить новую операцию, не изменяя классы этих объектов.
Использование шаблона в JDK
(примеры частично взяты с этого ресурса)
- java.nio.file.Files.walkFileTree(..., java.nio.file.FileVisitor)
----------------------------------------------------------------
-------------------java.nio.file.FileVisitor------------------
-- Код:
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class FileVisitor {
public static void main(String[] args) throws IOException {
Files.walkFileTree(
Paths.get("d:/Android/"),
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(
Path file, BasicFileAttributes attrs)
throws IOException {
System.out.println(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(
Path dir, BasicFileAttributes attrs)
throws IOException {
System.out.println(" -> DIR: " + dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(
Path dir, IOException e)
throws IOException {
if (e == null) {
System.out.println("<- DIR: " + dir);
return FileVisitResult.CONTINUE;
} else {
throw e;
}
}
});
}
}
-- Вопросы/задания:
1)