Какой шаблон дизайна использовать - PullRequest
0 голосов
/ 14 января 2012

В интервью задается вопрос:

Вы должны написать программу, которая принимает имя каталога (например, D: \ XYZ) и регулярное выражение (например, "* 1004").* Olivea") в качестве аргумента.И он перечислит все файлы в данном каталоге с именем, совпадающим с регулярным выражением.

Я сделал простую программу из этого:

package temp;

import java.io.File;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FileSearch1 {

    static ArrayList l = new ArrayList();

    public static void main(String[] args) {

        String folderName = "D:\\"; // the folder path in which you want to
                                    // search
        String strPattern = "Olivea"; // Pattern what you want to search
        final boolean searchinFile = true; // if you want to search in file keep
                                            // it true for folder search keep it
                                            // false
        File f = new File("D:\\");
        Pattern pattern1 = Pattern.compile(strPattern);
        sunny(f, pattern1, searchinFile);

    }

    public static void sunny(File f, Pattern pattern1,
            final boolean searchinFileOnly) {
        File[] f1 = f.listFiles();
        if (f1 == null)
            return;
        int k = f1.length;
        // System.out.println(k);
        int i = 0;
        while (i < k) {
            File f2 = f1[i];
            if (f2.isDirectory() && !searchinFileOnly) {
                Matcher match1 = pattern1.matcher(f2.getName());
                while (match1.find()) {
                    l.add("");
                    System.out.println(f2.getName());
                }
            } else if (f2.isFile() && searchinFileOnly) {
                Matcher match1 = pattern1.matcher(f2.getName());
                while (match1.find()) {
                    l.add("");
                    System.out.println(f2.getName());
                }
            }

            sunny(f2, pattern1, searchinFileOnly);
            i++;
        }
    }
}

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

Ответы [ 2 ]

4 голосов
/ 14 января 2012

Игнорируя тот факт, что вы пропустили золотое правило кодирования № 1, а именно то, что все должно быть названо правильно, вы можете использовать шаблоны Iterator и Composite .

Composite позволит одинаково обрабатывать файлы и каталоги.

Итератор используется для обхода контейнера и доступа к его элементам.Шаблон итератора отделяет алгоритмы от контейнеров.

2 голосов
/ 14 января 2012

Вы можете использовать шаблон стратегии , где вы создаете интерфейс с универсальными методами.

Вы предоставите класс, который реализует этот интерфейс.Таким образом, вы можете отделить детали реализации.В зависимости от входных данных вы можете написать больше классов с разными алгоритмами.Во время выполнения вы можете выбрать любую реализацию класса, какую захотите.Это единственная альтернатива.Я предлагаю вам изучить GOF паттернов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...