여러 도시가 포함 된 국가 클래스를 작성합니까?
확실한.
도시에는 많은 건축 수업이 포함되어 있습니까?
확실한.
플레이어가 접근 할 수있는 경로 찾기 수업을 만들 수 있습니까?
확실한.
위에서 제안한 모든 것이 합리적으로 보입니다. 장기적으로는 가장 좋은 방법은 아니지만 괜찮습니다. 처음 나온 조직 모델이기 때문에 분명히 알 수 있습니다. 그것을 가져 와서 구현을 시작하는 것이 중요합니다. 작업을 시작할 때 종종 개발자를 괴롭히는이 초기 "디자인 마비"를 시작하게하고, (어떤 방식 으로든 결함이있는 경우) 장단점에 대해 한두 가지를 가르쳐줍니다. 디자인에 대한 특정 접근 방식의
당신은 자연스럽게 당신의 머리 속에있는 개념들을 취해서 몇 가지 간단한 규칙에 따라 코드로 그룹화했습니다 :
- 이 개념이 이미 가지고 있거나 다른 개체의 데이터와는 다른 점이 있습니까? (국가와 사람들은 의미있는 데이터 나 행동을 거의 공유하지 않으므로 게임 내에서 고유 한 유형으로 표시되어야합니다).
- 이 개념을 코드에서 중요한 방식으로 조작해야할까요? (게임이 개별 사람들을 다루는 경우 해당
Person
클래스 가 필요할 수 있지만 게임이 SimCity의 이전 버전과 같이 집합 적으로 만 관심이 있다면 도시 인구의 1 : 1 매핑을 만들기 위해 해당 유형이나 해당 유형의 인스턴스가 필요하지 않을 int populationCount
수 있습니다.
- 이 개념에는 상태가 필요합니까 ? 그렇다면 어떻게 든 무료 함수가 아닌이 상태 (클래스)를 저장할 수 있도록 캡슐화해야합니다. (경로 찾기 구현에는 유사한 실제 객체가 없지만 맵에서 이미 고려한 노드와 같은 데이터를 추적해야하며, 묶음에 저장하는 것보다 클래스를 통해 수행하는 것이 좋습니다. 숨겨진 글로벌 및 독립 기능 제공).
간단하지만, 이러한 질문에 대답하면 정신 개념을 소스 코드로 변환할지 여부와 방법을 결정할 때 많은 도움이 될 수 있습니다. 객체 지향 설계 의 SOLID 원칙 을 읽어 볼 수도 있습니다 .
주석으로 작성된 엔터티 / 구성 요소 시스템의 제안은 유효한 접근 방법이지만 프로젝트를 더 작게 재조정하지 않는 한 여기에서 그것을 피할 것입니다. 너무 어려워서 다른 것에 중점을두면 얻을 수있는 교육 혜택이 희석 될 수 있습니다. 구성 요소 지향 모델에서 위의 질문에서 "유형"은 코드의 구체적인 유형이 아니라 엔터티를 구성하는 구성 요소 모음에 의해 정의 된 암시 적 유형이 더욱 암시 적으로됩니다. 동일한 지침 원칙이 적용될 수 있습니다.