Singletons / globals의 함정에 대해 수많은 시간을 들었으며 왜 자주 눈살을 찌푸리는 지 이해합니다.
내가 이해하지 못하는 것은 우아하고 지저분하지 않은 대안입니다. 싱글 톤 / 글로벌을 사용하는 것에 대한 대안은 항상 필요한 객체에 도달 할 때까지 엔진 객체를 통해 백만 레벨 아래로 객체를 전달하는 것입니다.
예를 들어 게임에서 게임을 시작할 때 자산을 미리로드합니다. 이 애셋은 플레이어가 메인 메뉴를 탐색하고 게임에 들어갈 때까지 나중에 사용되지 않습니다. 이 데이터를 Game 객체에서 ScreenManager 객체로 전달해야합니까 (단 하나의 Screen 만 실제로이 데이터를 처리한다는 사실에도 불구하고) 그 다음 적절한 Screen 객체로 전달해야합니까?
난 그냥 의존성 주입을 위해 전역 상태 데이터를 교환하고 자식 객체로 데이터를 전달하는 목적을 제외하고는 데이터를 신경 쓰지 않는 객체로 데이터를 전달하는 것 같습니다.
이것이 싱글 톤이 좋은 경우입니까, 아니면 내가 놓친 우아한 해결책이 있습니까?