2013-08-28 8 views
2

Скажем, у меня есть три класса: EntityManager, Предприятие и Компонент.Является ли циклическая ссылка плохой практикой?

У объекта есть массив компонентов (указателей), и каждый из этих компонентов имеет поле, которое является указателем на инкапсулирующую сущность.

EntityManager имеет множество сущностей, и каждый объект имеет указатель на его обволакивающие EntityManager.

Причиной такого дизайна является надежность данных. Компоненты нуждаются в доступе к полям инкапсулирующего объекта, а некоторые компоненты зависят от полей другого объекта (указатель на диспетчер сущностей).

Является ли этот «циклический» дизайн плохой практикой? Должен ли я переосмыслить свой дизайн?

+4

Это не обязательно «плохая практика» или «плохой дизайн». Дело в том, чтобы получить правильные указатели/ссылки. –

+2

Я не вижу проблемы с этим. Я бы предложил вам добавить логику, которая добавляет/удаляет ссылку в одном месте. Вы не хотите, чтобы в конечном итоге был сущностью, которая была менеджером, но у менеджера не было объекта. –

ответ

1

Любое циклическое является только плохим в отношении ресурсов общего доступа/блокировки, особенно в отношении многопоточности.

Кроме того, это даже не похоже, что это циклично. Это скорее бок о бок дизайн, это, конечно, для получения полей EntityManager, компонент должен пройти через Entity. Или, чтобы получить компонент, EntityManager должен пройти через Entity.

С точки зрения дизайна я буду беспокоиться о том, что произойдет, если вам нужно изменить поля EntityManager, от которых зависит объект или компонент?

Смежные вопросы