gpt4 book ai didi

java - 使用哪种设计模式

转载 作者:行者123 更新时间:2023-12-01 16:36:08 24 4
gpt4 key购买 nike

在采访中,提出的问题是:

You have to write a program that take a directory name (e.g. D:\XYZ) and a regular expression (e.g. "Olivea") as an argument. And it will list down all the files in the given directory with the name matched with the regular expression.

我由此制作了一个简单的程序:

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++;
}
}
}

笔试结束后,面试官问我哪个设计您可以在此使用模式。请您向我推荐各种我们可以在这段代码中实现哪些设计模式?

请帮助我如何在此应用复合和迭代器模式?非常感谢您的帮助

最佳答案

忽略您错过了编码的第一条黄金法则(即所有内容都应该正确命名)的事实,您可以使用 IteratorComposite模式。

复合将允许以类似的方式处理文件和目录。

迭代器用于遍历容器并访问容器的元素。迭代器模式将算法与容器解耦。

关于java - 使用哪种设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com