#11CreationalEasy

팩토리 패턴 (ShapeFactory)

팩토리 패턴

팩토리 패턴을 사용해 kind에 따라 적절한 Shape 인스턴스를 생성하는 ShapeFactory를 구현하세요.

팩토리 패턴은 객체 생성 로직을 한 곳에 모아, 호출자가 구체 클래스를 직접 알지 않아도 되게 해줍니다.

API

export interface Shape {
  area(): number;
}

export class ShapeFactory {
  static create(kind: 'circle' | 'square' | 'triangle', size: number): Shape;
}
  • circle: area = π * size * size
  • square: area = size * size
  • triangle: 정삼각형, area = (√3 / 4) * size * size
  • 알 수 없는 kind는 에러를 던집니다.

예시

const s = ShapeFactory.create('square', 3);
s.area(); // 9

학습 포인트

  • 객체 생성 책임을 팩토리로 위임
  • 호출자는 인터페이스만 의존, 구체 타입 비공개
  • 새 도형 추가 시 팩토리만 수정
언어: