Документальное приложение или нет?


Я пишу настольное приложение, которое можно использовать для управления танцевальной академией. Моя базовая модель данных содержит такие сущности, как студент, Учитель, класс, счет-фактура и т. д., а также различные отношения между ними.

Мой запланированный пользовательский интерфейс состоит из вертикального разделенного представления с iTunes-подобным OutlineView на левой стороне. Когда вы щелкаете на элементе "студенты"в этом представлении структуры, содержимое правой панели переключается с пера ManageStudents. Аналогично, если вы нажмете в элементе "счета-фактуры" в представлении структуры текущее представление будет заменено представлением ViewInvoices. Довольно просто, да?

Моя большая дилемма заключается в том, идти ли на основе документов или нет? Все мои чтения показывают, что это было бы хорошим выбором, если у пользователя есть несколько экземпляров сущностей, открытых одновременно. В данном случае это не так - в любой момент времени будет открыт только один экземпляр главного окна.

С другой стороны, я вижу так много пользы от Примеры, основанные на NSDocument, которые я вижу (и, честно говоря, большинство примеров, которые я вижу в Интернете, похоже, основаны на документах). Если бы я пошел по этому пути, мне было бы любопытно, определил бы Я тип документа для каждой из моих базовых сущностей или только для одного управляющего документа.

Любые указания будут приняты с благодарностью. Кроме того, указатели на что-то, что дает конкретные советы о том, когда NSDocument является/не подходит ("обзор приложений на основе документов" от Apple услужливо советует "текстовые процессоры и электронные таблицы-два примера приложений на основе документов" - я надеялся на что-то более проницательное и уместное для других реальных приложений)

2 4

2 ответа:

Подумайте о своей проблемной области. Что такое модель "документа"? Танцевальная академия? Если это так, и вы думаете, что ваши пользователи будут управлять только одной академией, то модель на основе документов не нужна. С другой стороны, если вы думаете, что документ представляет преподавателя, то, скорее всего, один менеджер академии захочет иметь дело с несколькими преподавателями, поэтому модель документа кажется подходящей.

Ключевой вопрос-это один из независимость. Если все объекты в модели вашего приложения связаны, то нет необходимости управлять независимыми документами. Если же, с другой стороны, существует разрозненная коллекция объектов, каждый из которых имеет свой собственный набор связанных "детей", то это выглядит как коллекция документов. Вот почему текстовый процессор основан на документах: текст, атрибуты и изображения в одном файле не связаны с другими файлами, поэтому имеет смысл рассматривать их как независимые документы.

Если вы видите выгоду перейти на nsdocument-based, идите за ней. Причина, по которой я говорю это, заключается в том, что если есть много текста для написания/чтения, то это должен быть хороший выбор.