Я wrting то, что посмотреть, как это (конечно же его немного более сложным, чем этот образец):"Inject" интерфейс implementions в класс в Java
public class DoOnAll {
private List<IActionPerformer> actionPerformers;
public DoOnAll(List<IActionPerformer> actionPerformers) {
this.actionPerformers = actionPerformers;
}
public void callFromSomeWhere(String path) {
File f = new File(path);
List<File> list = Arrays.asList(f.listFiles());
for (File file : list) {
for (IActionPerformer action : actionPerformers) {
action.perform(file);
}
}
}
}
public interface IActionPerformer {
public void perform(File file);
}
public class SomePerformer implements IActionPerformer {
public void perform(File file) {
if (getFileType(file) = ".txt") {
doSomething
}
}
}
у меня 2 вопроса:
Должен ли я переместить условие в
SomePerformer
на другой метод, напримерboolean accept(File file)
, а также добавить этот метод в интерфейс? Если да, как бы я «собирал» все принятые классы вDoOnAll
? просто перейдите в списокactionPerformers
и добавьте все accepeted в другой список, а затем перейдите по списку принятых и.perform
на них? Или есть другой способ, который обычно используется в методологии?Какие существуют способы ввода в список
actionPerformrs
? Я хочу написать независимые реализации и определить в файле, скажем, файл xml, какие из них ввести в список.
Является ли «TraverseDirecotry» (sic) «DoOnAll»? –
Является ли TraverseDirecotry опечаткой для конструктора DoOnAll? – wmorrison365
Моя ошибка, я отредактировал – AAaa