팩토리 패턴이란?
객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화하는 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.
1. 장점
- 상위 클래스와 하위 클래스가 분리되어 느슨한 결합을 가지지만 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 많은 유연성을 갖게 된다.
- 객체 생성 로직이 따로 떼어져 있기 때문에 코드 리팩토링 하더라도 한 곳만 고칠 수 있게 되니 유지 보수성이 증가한다.
2. JavaScript에서 팩토리 패턴
각각의 레시피(우유, 아메리카노 등) 들어있는 하위 클래스가 컨베이어 벨트를 통해 전달되고, 상위 클래스인 바리스타 공장에서 이 레피시들을 토대로 우유 등등을 생산하는 생산 공정을 생각하면 된다.
class Latte {
constructor() {
this.name = "latte"
}
}
class Esporsso {
constructor() {
this.name = "Esporesso"
}
}
class LatteFactory {
static createCoffee() {
return new Latte()
}
}
class EspressoFactory {
static createCoffee() {
return new Espresso()
}
}
const factoryList = { LatteFactory, EspressoFactory }
class CoffeeFactory {
static createCoffee(type) {
const factory = factoryList[type]
return factory.createCoffee()
}
}
const main = () => {
// 라떼 커피를 주문한다.
const coffee = CoffeeFactory.createCoffee("LatteFactory")
// 커피 이름을 부른다.
console.log(coffee.name) // latte
}
main(); // 실행!
- 상위 클래스 CoffeeFactory가 중요한 뼈대를 결정하고, 하위 클래스 LatteFactory가 구체적인 내용을 결정한다.
- CoffeeFactory에서 LatteFactory의 인스턴스를 생성하는 것이 아닌 LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하고 있다.(의존성 주입)
의존성 주입이란?
반응형
'CS' 카테고리의 다른 글
프로세스 메모리(스택, 힙, 데이터 영역, 코드 영역) 구조 개념 및 특징 (0) | 2023.01.13 |
---|---|
옵저버(Observer ) 패턴 개념 및 구현 방법(Java, JavaScript) (0) | 2023.01.10 |
알고리즘 BigO(시간 복잡도, 공간 복잡도) 개념 및 예제 (0) | 2023.01.05 |
의존성 주입(DI) 개념 및 Java, JavaScript 사용 방법 (0) | 2022.12.27 |
싱글톤(Singleton) 패턴 개념 및 Node.js DB(MySQL, MongoDB) 연결 모듈 구현 (1) | 2022.12.26 |