среда, 1 августа 2012 г.

pattern: Visitor

Назначение
    Описывает операцию, выполняемую с каждым объектом из некоторой структуры. Паттерн Посетитель позволяет определить новую операцию, не изменяя классы этих объектов.

Использование шаблона в 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)