다음과 같은 상충되는 의견이 있습니다.
- "전용 관리자 클래스는 결코 올바른 엔지니어링 툴이 아닙니다"
- "전담 관리자 수업은 (현재) 수천 개의 자원이있는 대규모 프로젝트에서 살아남는 가장 좋은 방법입니다."
다음 기능을 가진 클래식 ResourceManager 클래스를 보자.
- 에셋 (텍스처, 오디오, 3D 모델 등)로드
- 캐시를 유지하여 자산이 한 번만로드되도록 보장
- 참조는 자산을 할당 해제 할 수 있는지 판별하기 위해 자산을 계산합니다.
- 실제 자산의 출처를 숨 깁니다 (예 : 자산 당 하나의 파일이거나 하나의 패키지 파일에있는 모든 자산이거나 네트워크를 통해 자산을로드 할 수도 있음)
- 프로그램을 다시 시작하지 않고도 에셋을 다시로드 할 수 있으며, 이는 게임을하는 아티스트에게 매우 유용합니다.
이 ResourceManager 객체를 싱글 톤이 아닌 척하는 것으로 테이블에서 "싱글 톤이 나쁘다"라는 인수를 가져 와서 의존성 주입을 통해 전달해 봅시다 .
그런 다음 "공장 사용"또는 "공장 호출"인수가 있습니다. 이것에 대한 나의 문제는 그렇습니다. 공장입니다. 그러나 캐시와 리 로더이기도합니다 (더 나은 단어가 없음). 팩토리라고 부르는 것이 제대로 설명되어 있지 않으며, 적절한 팩토리로 만들면 캐싱 및 리로딩이 어디서 구현됩니까?
"관리자"클래스는 종종 잘못된 아키텍처의 증상이지만이 특별한 경우 어떻게 재구성하고 모든 기능을 유지할 수 있을까요? "관리자"클래스가 실제로 적절한 상황입니까?