Это точное назначение шаблона стратегии .Стратегии здесь - это FileType
, которые включают алгоритм, который экспортирует файл.В следующем примере:
public class Application{
List<FileType> exporters = new ArrayList<FileType>();
public void addExporter(FileType fileExporter){
exporters.add(fileExporter);
}
public void exportData(Object information){
for(FileType exporter : exporters){
exporter.export("d:\Export", information);
}
}
}
Класс Application
содержит список экспортеров, которые могут быть заполнены на ходу.Класс Application
не должен знать, какой тип файла-экспортера зарегистрирован, и как файл может быть экспортирован.Когда данные экспортируются, класс Applicaiton
проходит через зарегистрированных экспортеров и делегирует задачу экспорта каждому из них.
РЕДАКТИРОВАТЬ Ниже приведен пример использования класса Application
.
// Define a pdf exporter
PdfExport pdfExport = new pdfExport();
Application app = new Application();
// Register the new exporter
app.addExporter(pdfExport);
// Export some data...
app.export(information);
РЕДАКТИРОВАТЬ Как избежать файлов конфигурации и изменить кодкаждый раз, когда у вас есть новый FileType
?Вы можете загрузить экспортеры во время выполнения, используя рефлексию (подробности см. По этой ссылке )