Я создал пример, чтобы представить свой вопрос.
public class Algorithm
{
// This is the best, but circumstances prevent me from doing this.
/*public static void computeSomething(Data data)
{
// Compute some stuff
}*/
public static void computeSomething(DataFileReader reader) throws IOException
{
// Compute some stuff.
}
public static void computeSomething(File file) throws IOException, DataFormatException
{
DataFileReader = DataFileReaderFactory.newDataFileReader(file);
// Compute some stuff.
}
}
public class DataFileReaderFactory
{
private enum FileExtension { XML, UNSUPPORTED_EXTENSION }
private static final String XMLExtension = ".xml";
public static DataFileReader newDataFileReader(File file) throws DataFormatException
{
switch(computeFileExtension(file))
{
case XML : return new XMLFileReader(file);
default : throw new DataFormatException();
}
}
private static FileExtension computeFileExtension(File file)
{
if(file.getName().endsWith(XMLExtension))
return FileExtension.XML;
else
return FileExtension.UNSUPPORTED_EXTENSION;
}
}
Итак, я хотел бы знать, должен ли я определить мой интерфейс для приема файлов или мои собственные программы чтения файлов, которые гарантируют, что данные находятся в допустимом формате. Очевидно, я хотел бы иметь возможность воспринимать сами данные как объект Data , но я ограничен в этом отношении. Причина в том, что данные очень большие, и мне приходится сериализовать их для нескольких объектов. В этом случае более практично отправлять путь к данным, а не к самим данным.
В любом случае, что касается вопроса, я склоняюсь к методу, который использует экземпляр файла Java, , который кажется более общим, но я хочу услышать ваш совет. Спасибо!