Вопросы дизайна

Я создаю приложение для Windows на С#, и у меня есть следующий вопрос:

У меня есть следующая структура объекта: Родитель -> Дочерняя коллекция -> Дочерняя коллекция -> Внучатая коллекция -> Внук.

Вариант использования требует, чтобы я использовал свой родительский объект поэтапно. Например. Создайте новый экземпляр родителя. Заполните родителя и сохраните. На более позднем этапе я извлекал родителя, заполнял дочерние элементы и сохранял. На заключительном этапе я снова извлекал родителя, заполнял внуков для конкретных дочерних объектов и сохранял.

Это плохая объектная модель? Если да, то как можно разделить эту огромную объектную модель на более мелкие модели?

Спасибо


person MegaByte    schedule 06.11.2008    source источник


Ответы (1)


Я думаю, что на этот вопрос можно ответить, только если мы знаем область проблемы. Дизайн (в основном) правильный или неправильный в зависимости от того, как он подходит к ситуации.

person Andrew Bullock    schedule 06.11.2008
comment
Я согласен с Эндрю, если объектная модель близко соответствует реальной проблеме, то вы на правильном пути. Я хотел бы добавить, что иногда это дает вам объектную модель, которую неудобно программировать. В этих случаях вам помогут шаблоны проектирования — вы можете использовать шаблоны, чтобы представить модель с разных точек зрения, упростить доступ к ней с помощью фасадов для конкретных вариантов использования, оптимизировать ее с помощью отложенной загрузки. Вы также можете пожертвовать некоторым сопоставлением модели с реальным миром, чтобы в крайнем случае облегчить разработку (лучшее — враг хорошего). - person RobD; 07.08.2012
comment
ключевое слово - модель, это проекция реального мира, а не реального мира. Что-то вы оставите, что-то упустите. Вы моделируете ситуацию реального мира таким образом, чтобы с ней было легко работать, и то, как вы определяете это, зависит от ситуации. Следует помнить, что нет правильной или неправильной модели, но нет и единственной модели. Иногда вам нужно несколько моделей, чтобы достичь того, чего вы хотите - person Andrew Bullock; 07.08.2012