Я работаю над личным проектом, который по сути является редактором кода. Представьте себе стандартное меню «Файл» с элементами меню «Создать», «Открыть», «Сохранить», «Сохранить как», «Сохранить все», «Закрыть», «Закрыть все».
Я застрял с правильным дизайном. В настоящее время у меня есть:
- Класс Document, представляющий документ - элемент управления для редактирования кода, соответствующую вкладку на панели вкладок и различные свойства, такие как Заголовок, Имя файла, IsModified и т. Д.
- Класс Documents, представляющий все открытые документы. Содержит такие методы, как New, Open (FileName), ...
Проблема в том, что я не могу понять, какая команда класса / меню отвечает за какие задачи.
Например, с помощью File-> New команда меню проста - вызвать Documents.New и все.
Но что за Файл-> Открыть? Метод Documents.Open ожидает имя файла в качестве параметра. Поэтому перед вызовом этого метода мне нужно открыть диалоговое окно выбора файла, позволить пользователю выбирать файлы и для каждого файла вызывать Documents.Open (FileName). Где лучше всего разместить этот вспомогательный код в команде меню, переписать Documents.Open и поместить его туда?
То же самое с сохранением действий. Кто отвечает за сохранение? Это класс Documents, который использует Document.Editor.SaveToFile (FileName) или лучше создать метод Save в классе Document? Где-то посередине также нужно спросить пользователя, хочет ли он сохранить текущий документ ...
Я застрял. Есть идеи?
Отредактировано: язык программирования Delphi.