#9CreationalEasy

Factory Pattern

Factory Pattern

타입 문자열을 받아 적절한 객체를 만들어 돌려주는 팩토리 함수 createAnimal을 구현하세요.

API

export interface Animal {
  name: string;
  sound(): string;
}
export function createAnimal(type: 'dog' | 'cat' | 'cow', name: string): Animal;

동작

  • dogsound() returns 'Woof'
  • catsound() returns 'Meow'
  • cowsound() returns 'Moo'
  • 그 외 → Error('Unknown animal type: <type>') throw

학습 포인트

  • 클라이언트가 new 키워드로 구체 클래스를 직접 다루지 않고, 팩토리에 위임
  • 새 타입을 추가할 때 호출 측 변경 없이 팩토리만 확장 가능
  • 구체 구현을 캡슐화하고 인터페이스만 노출
언어: