2013-08-28 6 views
2

세 클래스가 있습니다. EntityManager, 엔터티구성 요소입니다.순환 참조는 나쁜 습관입니까?

엔티티는 구성 요소 (포인터)의 배열을 가지며 이러한 각 구성 요소는 캡슐화 엔티티에 대한 포인터 인 필드를 가지고 있습니다.

EntityManager의 엔티티들의 어레이를 가지며, 각 엔티티는 캡슐화 의 EntityManager의 포인터를 갖는다.

이 디자인의 이유는 데이터 의존성 때문입니다. 구성 요소은 캡슐화 엔티티의 필드에 액세스해야하며 일부 구성 요소는 다른 엔티티의 필드 (엔티티 관리자에 대한 포인터)에 의존합니다.

이 "순환"디자인은 나쁜 습관입니까? 내 디자인을 다시 생각해야할까요?

+4

반드시 '나쁜 습관'또는 '나쁜 디자인'은 아닙니다. 요점은 포인터 소유권/참조를 올바르게 얻는 것입니다. –

+2

이 문제는 표시되지 않습니다. 같은 장소에 참조를 추가/삭제하는 논리를 넣는 것이 좋습니다. 관리자 였지만 엔터티가없는 관리자로 끝내기를 원하지는 않습니다. –

답변

1

순환 공유는 리소스 공유/잠금 리소스, 특히 멀티 스레딩과 관련하여 나쁘다.

게다가, 주기적으로 보이지도 않습니다. 물론, EntityManager 필드를 얻으려면 컴포넌트가 Entity를 거쳐야합니다. 또는 Component를 얻으려면 EntityManager가 엔티티를 통과해야합니다.

엔티티 또는 구성 요소가 종속 된 EntityManager 필드를 변경해야한다면 어떻게 될지 걱정됩니다.