본문 바로가기

Design Pattern

3. 팩토리패턴 Factory Pattern

1. 팩토리 패턴 (Factory Pattern)


팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분만 분리해 추상화한 패턴. 상속 관계에 있는 두 클래스에서 상위 클래스가 핵심 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴.
장점 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가지고 상위 클래스에서는 인스턴스 생성 방식에 대해 알 필요가 없어서 유연성이 높음.
객체 생성 로직이 분리되어있기에 코드 리팩터링이 용이하고 유지보수성이 증가.

하위 코드에서 CoffeeFactory는 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스인 LatteFactory가 구체적인 내용을 결정.
이는 의존성 주입이라고 볼 수도 있다.
(CoffeFactory에서 LatteFactoryd의 인스턴스를 생성하는 것이 아닌, LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하고 있기 때문.)

class Latte {
  constructor() {
    this.name = "latte"

  }
}


class VanillaLatte { //하위클래스
  constructor() {
      this.name = "VanillaLatte"
  }
}

class LatteFactory {
  constructor() {
    console.log('Latte made. ')
      return new Latte()
  }
}

class VanillaLatteFactory {
  constructor() {
    console.log('Vanilla Latte made. ')
      return new VanillaLatte()
  }
}

const factoryList = { LatteFactory, VanillaLatteFactory }

class CoffeFactory { // 상위 클래스
    static createCoffee(type) {
        const factory = facotryList[type]
        return factory.createCoffee()
    }
}


const main = () => {
  const coffee = CoffeeFactory.createCoffee("LatteFactory")
  console.log(coffee.name) // Latte가 콘솔에 출력됨.

}

static: 정적 메서드. 정적메서드를 쓰면 클래스의 인스턴스 없이 호출이 가능하여 메모리를 절약할 수 있고 개별 인스턴스에 묶이지 않으며, 클래스 내의 함수를 정의할 수 있는 장점이 있음.

REFERENCE
도서 | 면접을 위한 CS 전공지식 노트
https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95#

https://great-developer.tistory.com/64

'Design Pattern' 카테고리의 다른 글

6. 프록시 패턴  (0) 2022.10.24
5. 옵저버 패턴 Observer Pattern  (0) 2022.10.20
4. 전략패턴 Strategy Pattern  (0) 2022.10.20
2. 의존성 주입  (0) 2022.10.19
1. 디자인 패턴 정의와 싱글톤 패턴  (0) 2022.10.19