В моем классе есть поле, представляющее массив объектов, которые реализуют некоторый интерфейс каждый по-другому. Более точно, каждый объект в массиве имеет метод для анализа файла некоторого типа и метода, который возвращает соответствующее поддерживаемое расширение файла. Также мой класс имеет набор, который заполняется путем разбора файла.Инкапсуляция поля, представляющего массив объектов
private MyInterface[] myArray = new MyInterface[] {
new MyInterface() {
@Override
public void parseFile(File file){/*parsing TXT*/}
@Override
public String getSupportedFileExtension(){return "txt";}
},
new MyInterface() {
@Override
public void parseFile(File file){/*parsing XML*/}
@Override
public String getSupportedFileExtension(){return "xml";},
},
};
Мое рассуждение, основанное на этом подходе, заключается в том, чтобы поддерживать все поддерживаемые возможности анализа файлов в одном фрагменте кода. Я хочу, чтобы этот массив использовался как внутри, так и вне класса.
Если я возвращаю этот массив через геттер, существует риск установить его на нуль, например, и разбить программу. Так что вопросы:
- Если я делаю массив окончательным, это нормально или есть лучшие способы?
- Является ли это хорошим подходом к программированию, или я должен вообще избегать такого подхода?
- Как другие люди делают такие вещи?
Спасибо!
Я думаю, что создание конкретных подклассов - это правильная идея. –