Согласно Руководству по приложениям для документов , должны быть DocumentController, Document и WindowController. У меня проблемы с тем, чтобы научиться судить о том, куда должна упасть данная ответственность.
Мой документ представляет список задач. Данный список задач читается в память моим документом и отображается WindowController. Количество задач, которые могут поместиться в окне в любое время, определяется размером окна, поэтому, когда мне нужно отобразить задачи, мой WindowController запрашивает у моего документа достаточно задач, чтобы заполнить видимый список.
Если я захочу, я могу искать в своих задачах с помощью регулярных выражений (я знаю, причудливое право), и совпадения возвращаются в качестве лучших результатов. В этом случае мне не совсем понятно, где лежат обязанности. Документ посвящен сохранению и загрузке списка задач, но выше я попросил его также иметь дело с возвратом небольших частей списка в WindowController. Должна ли логика сопоставления войти в Документ? Или это должно остаться в WindowController, поскольку он не имеет ничего общего с сохранением и загрузкой данных (порядок задач после поиска никогда не сохраняется на диск)? Это те вопросы, которые я задаю себе (себе). Когда я оглядываюсь назад на проект, подобный этому, я замечаю места, где мои призывы к суждениям кажутся противоречащими друг другу. Иногда я провожу час, просто перемещая одну логику между двумя ... пытаясь представить, какой дизайн имеет больше смысла.
Очевидно, мне нужна помощь.
Мой пример очень специфической ситуации, но меня не интересует конкретное решение. Мне интересно узнать в более общих чертах, какими должны быть обязанности этих трех классов. Я прочитал руководство и немного погуглил, но все еще не могу понять, как с ним справиться.
Этот вопрос был полезен, но я все еще в замешательстве.
спасибо!