Table of Contents

07. Patterns

이 문서의 목표

Framework가 제공하는 재사용 가능한 설계 패턴 목록과 사용 시점을 이해한다.

왜 필요한가

State/Pool/Command 같은 패턴을 프로젝트마다 새로 구현하면 품질이 들쭉날쭉해진다. Patterns 계층은 검증된 구현을 공유한다.

언제 사용하는가

  • 조건 검증 로직 -> Specification (신규 Rule/Condition 시스템 만들지 않는다)
  • 상태 전이 -> StateMachine
  • 객체 재사용 -> Pool
  • 되돌릴 수 있는 동작 -> Command
  • 알고리즘 교체 가능성 -> Strategy

프로젝트에서 어떤 역할인가

Systems가 내부적으로 사용하거나, Game Layer가 직접 사용하는 범용 구조다. System 간 조합 로직도 여기 패턴(Mediator, Pipeline)을 활용해 Game/Integration Layer에서 구성한다.

코드 예제

var spec = new IsAliveSpecification().And(new HasTargetSpecification());
if (spec.IsSatisfiedBy(entity)) { /* ... */ }

관련 Sample

Samples/Patterns/PatternsSample.cs

Best Practice

동일 책임의 Validation 시스템과 Specification 시스템을 동시에 운영하지 않는다 (Rules #11).

자주 하는 실수

  • Specification이 있는데 별도 Rule/Condition 클래스를 새로 만듦
  • Interface+구현체 쌍을 교체 가능성/테스트 필요성 없이 남발

실습 과제

  1. Specification 두 개를 And로 조합해본다.
  2. 간단한 상태(Idle/Move/Attack)를 StateMachine으로 구성해본다.

이전 문서 / 다음 문서

이전: 06_Core.md 다음: 08_AssetSystem.md

관련 API

MCP_Index.md Patterns 섹션 전체