Обсуждение:Сохранение в поток (постановка)
Хочется, чтобы код нового сохранения в поток не был похож на существующий, который можно охарактеризовать как пример классического спагетти-кода. Следует четко разделить подсистемы записи-считывания данных, получения информации о структуре базы данных, синхронизации объектов, организации диалога с пользователем и, собственно, кода сохранения в поток. Для записи информации следует создать абстрактный базовый класс (АБК) -- writer -- от которого наследовать два класса: BinaryWriter и XMLWriter. Аналогично сделать для класса, который будет считывать и разбирать поток при загрузке объектов в базу. Похожую иерархию (АБК и два наследника) стоит предусмотреть и для объекта, предоставляющего информацию о структуре БД. Наследниками АБК в этом случае будут два класса: использующий информацию из гедыминовского объекта atDatabase и напрямую обращающийся к RDB$ таблицам.