팩토리 패턴에 대해 알아보자
객체생성의 공장, 팩토리 패턴 by ZeroCho
2024-10-24 · 3분 · 조회 1@ZeroChoTV님의 팩토리 패턴 를 보고 정리한 내용입니다.
팩토리 패턴이란?
팩토리 패턴은 객체를 생성하는 과정을 추상화하여 다양한 방식으로 객체를 생성할 수 있게 한다.
간단한 예제
function animalFactory(type) {
if (type === 'cat') {
return new Cat();
} else {
return new Dog();
}
}
animalFactory('cat');
animalFactory('dog');위와 같이 여러 객체를 생성하는 로직을 animalFactory 함수로 추상화 할 수 있는데,
이를 객체의 생성을 담당하는 팩토리로 만들어서 사용할 수 있다.
class Animal {
factory(type) {
if (type === 'cat') {
return new Cat();
} else {
return new Dog();
}
}
}
new Animal().factory('cat');
new Animal().factory('dog');의도를 밝혀주는 메서드 이름
직관적인 메서드 이름을 통해 코드의 가독성을 높이고 의도를 명확히 할 수 있다.
class Animal {
createCatOrDog(type) {
if (type === 'cat') {
return new Cat();
} else {
return new Dog();
}
}
}
new Animal().createCatOrDog('cat');
new Animal().createCatOrDog('dog');복잡한 예제
class Cat {
constructor() {
this.sound = '야옹';
}
}
class Dog {
constructor() {
this.sound = '멍멍';
}
}
class CatFactory {
makeSound() {
console.log('야옹');
}
}
class DogFactory {
makeSound() {
console.log('멍멍');
}
}
const animalList = { CatFactory, DogFactory };
class Animal {
makeSound(type) {
return new animalList[type]().makeSound();
}
}
new Animal().createCatOrDog('cat').makeSound(); // 야옹
new Animal().createCatOrDog('dog').makeSound(); // 멍멍결론
팩토리 패턴의 장점은
- 유연성 : 객체 생성을 위한 로직을 외부에서 추상화하여 캡슐화할 수 있다.
- 재사용성 : 동일한 객체 생성 로직을 여러 군데 사용할 수 있다.
- 확장성 : 새로운 객체 타입을 추가할 때 기존 코드를 수정할 필요 없이 메서드를 확장할 수 있다.
이러한 장점을 통해 객체 생성에 대한 로직을 캡슐화하고, 객체 생성을 담당하는 팩토리를 통해 객체 생성을 추상화하여 사용할 수 있다.