Я создаю приложение для Windows на C#, и у меня есть следующий вопрос по дизайну:
У меня следующая структура объекта: Родитель -> Дочерняя коллекция -> Ребенок -> Коллекция внуков -> Внук.
Вариант использования требует, чтобы я использовал свой родительский объект поэтапно. Например. Создайте новый экземпляр parent. Заполните родительский элемент и сохраните. На более позднем этапе я бы получил родительский объект, заселил его дочерними элементами и сохранил. На последнем этапе я бы снова получил родительский объект, заселил внуков для определенных дочерних объектов и сохранил.
Это плохая объектная модель? Если да, то как можно будет разделить эту огромную объектную модель на более мелкие?
Спасибо





Я думаю, что на этот вопрос можно ответить только в том случае, если мы знаем суть проблемы. Дизайн (в основном) правильный или неправильный, в зависимости от того, как он соответствует ситуации.
Ключевое слово - «модель», это проекция реального мира, а не реального мира. Что-то вы оставите, а что-то пропустите. Вы моделируете ситуацию в реальном мире таким образом, чтобы с ней было легко работать, как вы определяете это в зависимости от ситуации. Следует помнить, что нет правильной или неправильной модели, но также нет ни одной модели. Иногда вам нужно несколько моделей, чтобы добиться желаемого.
Я согласен с Эндрю, если объектная модель близко соответствует реальной проблеме, значит, вы на правильном пути. Я хотел бы добавить, что иногда это дает вам объектную модель, которая не «удобна» для программирования. В этих случаях вам могут помочь шаблоны проектирования - вы можете использовать шаблоны, чтобы представить модель с разных точек зрения, упростить доступ к ней с помощью фасадов конкретных вариантов использования, оптимизировать ее с помощью отложенной загрузки. Вы также можете решить пожертвовать некоторым отображением модели в реальном мире, чтобы упростить разработку в крайнем случае (идеальное - враг хорошего).