ПРОБЛЕМА
У меня есть приложение, которое требует загрузки большей части своих данных из .txt файлов (которые ранее были предоставлены и существуют в локальном хранилище - они нене нужно быть извлеченным). Допустим, в настоящее время у меня есть 3 модели: Person
, Role
, Task
с соответствующими данными Persons.txt , Roles.txt , Tasks.txt соответственно. Каждый файл имеет заголовок, который описывает структуру каждой записи (, например, id; имя; фамилия ), и каждая строка в файле .txt представляет одну запись (исключая заголовок). При этом записи могут быть в неправильном формате (отличном от заголовка), и они должны быть пропущены.
GOAL
Я хочу каким-то образом создать универсальный загрузчик данных, который будет загружать данные (читать строку .txt построчно, проверять ввод, обрезать и преобразовывать в экземпляр объекта). ) и вернуть список объектов в зависимости от класса, который я им передаю. Например, DataLoader<Person>
для загрузки только личных данных. Текущее решение использует шаблон Singleton для каждого названного класса, а также содержит логику для анализа, проверки и преобразования данных. Причина этого в основном в том, что данные должны быть доступны из всех других частей приложения, но каждый класс содержит слишком много логики, и большинство других классов полагаются только на эти синглтоны - что, на мой взгляд, не очень хорошо.
ВОПРОС
Каков наилучший (самый чистый) шаблон проектирования для реализации в этом случае использования? Несколько вещей, на которые стоит обратить внимание перед ответом:
- Формат файла никогда не изменится (он всегда будет .txt)
- В будущем может быть больше данных для загрузки (например,
Department
и Departments.txt и т. д.)