У меня есть небольшое приложение, которое позволяет пользователям создавать учетные записи, а затем начислять «очки» друг другу. UserAccount - это объект, как и Point, и между ними существует взаимосвязь агрегации: каждый UserAccount имеет переменную-член (PointHistory), которая представляет собой набор Points.
Объект Point просто содержит свойства, для которых объект UserAccount отправил / получил Point.
Это было нормально, когда я просто сериализовал классы, чтобы сохранить мою объектную модель. Однако сейчас я реализую базу данных для сохранения данных объекта, и только один / несколько объектов будут загружены в память в любой момент времени. Чтобы загрузить объекты, у меня есть метод конструктора, который создает новый UserAccount из строки в базе данных, и аналогичный конструктор для создания точки из строки базы данных. Вот тут и начинается проблема - как конструктор для одного объекта может вызвать конструктор для другого объекта, когда второй конструктор должен ссылаться на то, что первый конструктор еще не построил? Чтобы завершить строительство, объект должен быть уже построен.
Простое решение - просто заменить набор объектов Point (PointHistory) набором строк, извлеченных из запроса к базе данных. Этого достаточно для моих целей. Однако мне интересно, есть ли другой способ сделать то, что не оставляет объект / объектную модель Point, и является ли эта проблема агрегации / постоянства распространенной?