저는 개인 프로젝트로 매우 간단한 RTS 게임을 만드는 중입니다. 지금까지 약간의 실험 작업을 해왔고 타일, 카메라 및 유닛 이동이 잘 작동하고 있습니다.클래스가 컨테이너에 대한 참조를 유지하는 것이 좋습니까?
그러나 단위 선택 시스템에 기능을 추가하고 싶습니다. 몇 가지 질문이있었습니다. 유닛 목록이 포함 된 Player 클래스가 있지만 Squad 클래스를 만들려고했습니다. 주로 일부 그룹을 만들었고 해당 그룹에 쉽게 액세스 할 수있는 바로 가기를 사용했습니다. 그룹에 유닛을 추가하려면 새로운 유닛에 추가하기 전에 유닛을 현재 그룹에서 제거해야합니다. AddUnit 메서드는 Squad 클래스에 있지만, 유닛을 확인하고 제거하기 위해 내가 추가하는 각각의 새로운 유닛에 대해 다른 모든 유닛을 검색하고 싶지는 않습니다. Unit 클래스 내의 소유자 팀에 대한 참조를 유지하면 어떨까요? 그러면 더 쉽게 제거 될 수 있지만 괜찮습니까? 다른 플레이어에게 유닛을 전송하려는 경우에도 동일한 문제가 발생합니다. 유닛에 플레이어에 대한 참조를 유지할 수 있습니까? 글쎄, 나는 할 수 있다는 것을 알고 있지만 받아 들여질 수 있을까? 대안이 있습니까?
또 다른 대안은 당신이하려고하는 추상화 수준에 따라 일종의 이벤트 처리기 패턴을 사용하므로'Squad'는 "청취자 제거"를 각 Unit에 등록합니다. '스쿼드 (Squad)'를 바꾸고 자하는 '유닛 (Unit)'은 청취자를 먼저 호출 한 다음 새로운 '스쿼드 (Squad)'에 자신을 추가합니다. –
그렇다면 좋습니다. 그러나, 내가 스쿼드를 제거해야한다면 (스쿼드 목록에서 제거), 스쿼드에 있던 각 유닛은 여전히 그것을 참조 할 것입니다 ... 스쿼드의 각 유닛을 반복적으로 반복해야하고 스쿼드 참조를 다음과 같이 설정해야합니다. 목록에서 제거하기 전에 null을? – Amaranth
@Rob : 예, observer/observable 클래스에 대해 생각했지만 notifyobserver() 메서드가 내 필요에 너무 일반적이라고 생각했습니다. 그러나 필자는 자체적 인 유형의 리스너 인터페이스를 구현할 수 있습니다. – Amaranth