Является ли циклическая ссылка плохой практикой?

Допустим, у меня есть три класса: EntityManager, Entity и Component.

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

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

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

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


person user2687268    schedule 28.08.2013    source источник
comment
Это не обязательно «плохая практика» или «плохой дизайн». Дело в том, чтобы правильно указать владельца/ссылку указателя.   -  person πάντα ῥεῖ    schedule 28.08.2013
comment
Я не вижу в этом проблемы. Я бы посоветовал вам поместить логику добавления/удаления ссылки в одно и то же место. Вы не хотите, чтобы сущность была менеджером, но у менеджера не было сущности.   -  person the_lotus    schedule 28.08.2013


Ответы (1)


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

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

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

person JoeManiaci    schedule 30.10.2013