У меня есть class outputInterface;
, который должен обрабатывать вывод (в файлы) некоторых данных. Данные содержатся в объектах некоторых пользовательских классов, например, dataClassA
и dataClassB
, которые все происходят из общего базового класса dataClassBase
.
Теперь я хочу, чтобы данные записывались в разные файлы в соответствии с их типом. Таким образом, данные типа dataClassA
должны идти в fileA
, данные типа dataClassB
должны идти в fileB
и так далее. Поскольку этот вывод происходит очень часто, я бы хотел, чтобы описатели файлов (fileA
и fileB
) оставались открытыми, т.е. я не хочу открывать и закрывать файлы для вывода каждого фрагмента данных. Можно ожидать, что один outputInterface
объект будет существовать все время.
Итак, чего бы я хотел достичь, так это:
- Динамически связать данные типа
dataClassA
с дескриптором файла fileA
и т. Д.
- При получении данных типа
dataClassA
проверьте, подключен ли fileA
к файлу, если нет, откройте файл.
Как я могу получить это поведение (или хотя бы что-то похожее / лучшее)?
Я думал о том, чтобы заставить файл обрабатывать статические члены dataClassA
и dataClassB
(или базовый класс dataClassBase
?). Но тогда, как мне позаботиться о закрытии файлов? Мне бы пришлось как-то отслеживать типы данных, которые фактически использовались (файлы, которые фактически были открыты).