Factory pattern

생성 패턴중 하나로서 객체의 생성을 추상화 한다. 팩토리 패턴을 사용하여 객체 생성 로직을 클라이언트에 노출하지 않고 생성할 수 있고, 공통 인터페이스를 사용하여 새로 생성된 객체를 참조할 수 있다.

구현

공통 Interface 및 구현하는 class 생성

interface :

1
2
3
interface Animal {
speak(): void;
}

Cat :

1
2
3
4
5
class Cat implements Animal {
speak(): void {
console.log("야옹");
}
}

Dog :

1
2
3
4
5
class Dog implements Animal {
speak(): void {
console.log("명");
}
}

TODO :
class UML 그려 넣기

Factory class 생성

객체에 대한 정보를 기반으로 인스턴스를 리턴하는 클래스를 생성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
type instanceType = "Cat" | "Dog";

class AnimalFactory {
static createAnimal(type: instanceType) {
switch (type) {
case "Cat":
return new Cat();
case "Dog":
return new Dog();
default:
return null;
}
}
}