없이 객체의 아이의 방법을 노출 나는 그것의 상태 (예를 들어 EntityManager
, InputManager
, Physics
을) 관리하는 데 사용하는 여러 서브 시스템 (자식 개체)가 클래스 Level
의 객체를 가지고있다. Level
의 외부 인터페이스에서 이러한 하위 시스템의 메소드 중 일부를 공개하려고합니다.중복
uint32_t Level::CreateEntity()
{
return entityManager.CreateEntity();
}
Entity& Level::GetEntity(uint32_t entityId)
{
return entityManager.GetEntity(entityId);
}
uint16_t Level::CreateInputState()
{
return inputManager.CreateInputState();
}
void Level::AttachInputState(uint32_t entityId, uint16_t inputStateId)
{
inputManager.AttachInputState(entityId, inputStateId);
}
InputState& Level::GetInputState(uint16_t inputStateId)
{
return inputManager.GetInputState(inputStateId);
}
이 솔루션은 Level
클래스 내부의 메소드 선언을 복제 및 서브 시스템에 대한 제어를 리디렉션 한 줄 호출을 작성하는 저를 필요
여기에 하나 개의 솔루션입니다. 과거에 작업 한 프로젝트에서 이것은 관리하기 까다로운 문제였습니다.
다른 해결책은 공용 인터페이스에서 하위 시스템을 노출하는 것입니다. Level
외부의 객체가 호출을 전달하는 것이 중요하지 않으므로이 문제를 피할 수 있습니다.
이 문제를보다 우아하게 처리 할 수있는 디자인이 있습니까?
어린이 기능을 모두 표시하거나 일부 기능 만 표시하겠습니까? – Nobody
왜 매니저 객체가'Level'의 멤버가되어야합니까? – wilhelmtell
@Nobody 일부 특별한 것들. – Kai