Скажем, у меня есть функция, которая просматривает файл и возвращает два результата: распознанный и нераспознанный. Когда он возвращает распознанный результат, я хочу, чтобы результат также содержал сообщение, но когда он не распознан, сообщение не требуется.
public Result checkFile(File file) {
...
}
Есть два способа сделать это ...
Иметь класс Result
так:
class Result {
private Type type;
private String message;
enum Type {
RECOGNIZED, UNRECOGNIZED
}
}
Или сделай так:
class Result {
}
class Unrecognized extends Result {
}
class Recognized extends Result {
private String message;
}
Я склонен использовать второй метод, хотя мне придется проверять результат, используя instanceof
, и я прочитал, что instanceof
следует по возможности избегать, но при этом избегается пустое сообщение когда результат не распознан. В этом примере пустое сообщение не будет большой проблемой, но что, если с распознанным результатом связано намного больше данных? Мне кажется худшей практикой создавать экземпляр класса, который может иметь все нулевые поля.
Как лучше всего справляться с этой ситуацией? Есть ли какой-то стандартный метод или шаблон?