В типичной программе, выполняющейся в памяти, объекты почти всегда будут храниться по ссылке в качестве указателей, поэтому вы сохраняете идентификаторы для B и C, это просто, что вы сами не разбираетесь в деталях, язык их скрывает от тебя.
Загрузка и хранение «Цельного объекта» является сомнительной концепцией. Я знаю, что вы пытаетесь быть независимыми от языка, но одна из первых вещей, которые действительно помогли мне «Получить» OO, состоит в том, что почти каждый объект должен иметь собственный жизненный цикл.
Если у вас есть объект A, который содержит «Содержит» объект B, и вы передаете ссылку на объект B на объект C, тогда объект A должен знать что-то о объекте C, это не совсем нормально. Освобождение жизненного цикла объекта B, чтобы объект A ничего не знал о объекте C, является одним из основных понятий, которые делают работу OO.
Итак, если это то, что вы имели в виду, сохраняя весь объект, тогда нет - никогда не делайте этого.
И это справедливо и для баз данных и другого хранилища. Даже если один объект отвечает за уничтожение другого, он редко должен содержать данные других объектов.
И (хотя я думаю, что вы хотели сказать «вытащить объекты B и C», а не «методы»), понятие о возможности передать объект из другого также очень полезно, и, как правило, в нем нет ничего плохого с одной оговоркой:
Помните, что объект не имеет контроля над тем, что происходит снаружи. Его можно обойти, методы, называемые в полуслучайном порядке, и т. Д. Поэтому полезно держать ваш объект как можно более безопасным. Если что-то вызывается в неправильном порядке или передается недопустимая переменная или вы обнаружите, что каким-то образом вы ввели недопустимое состояние, Fail early и Fail LOUD так, что программист, совершивший ошибку, назвал это.
Вы также должны сделать это как можно труднее, чтобы попасть в незаконное состояние - это означает, что ваш объект мал и прост, делайте переменные окончательными, когда это возможно, и старайтесь не иметь слишком много мест, где имеет место порядок вызова параметров.
Вы говорите о агрегации COM? – dirkgently
Что значит «магазин». Если у вас есть объекты, вам не нужны идентификаторы, потому что у вас есть экземпляры. Является ли эта база данных –
хорошо, я не использую COM, но я ищу более абстрактный ответ, чем привязанный к конкретной модели языка/объекта. – ckarbass