TIL/CS

[디자인패턴] 팩토리 패턴

에리조나진생 2024. 5. 17. 00:34

팩토리 패턴

  • 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위클래스는 객체 생성에 대한 구체적인 내용을 결정하는 패턴
  • 상위 클래스에서 객체 생성방식에 대해 관여하지 않아 유연성이 높음
  • 객체 생성 방식은 하위 클래스에서 관리하므로 유지보수가 용이

예시

class Factory { // 상위 클래스 
    static createClass(type) {
        const factory = factoryList[type]
        return factory.createClass() // 하위 클래스 로직에 관계없음 
    }
}
class Lower1 {
    constructor() {
        this.name = "lower1"
    }
}
class Lower2 {
    constructor() {
        this.name = "lower2"
    }
}
class Lower1Factory extends Factory { // 하위 클래스 생성 
    static createClass() {
        return new Lower1()
    }
}
class Lower2Factory extends Factory { // 하위 클래스 생성 
    static createClass() {
        return new Lower2()
    }
}
const factoryList = { Lower1Factory, Lower2Factory }

const main = () => {
    const lower = Factory.createClass("lower1")
    console.log(lower.name) // lower
}