dongling 2024. 7. 3. 21:54
728x90
반응형
SMALL

🔶 팩토리 패턴(factory pattern)

  • 객체 생성 부분을 떼어내 추상화하는 패턴
  • 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴

    장점 
    1. 유연성 증가 : 객체 생성하는 부분(CarFactory)과 객체를 사용하는 부분(Car)을 분리하여 객체 생성과 사용에 대한 유연성을 높
    2. 유지 보수성 증가 : 캡슐화하여 객체 생성 과정을 추상화 → 한 곳만 고쳐도 되기 때문에 유지보수 및 코드 변경이 용이
    3. 코드 의존성 낮춤
    단점
    1. 코드 복잡도 증가 : 팩토리 클래스 추가 작성해야하기 때문
    2. 유지보수 어려움 : 팩토리 클래스의 존재로 인해 객체 생성 로직이 복잡해짐
    3. 객체의 생성 과정이 추가로 이루어지므로 약간의 성능 손실이 발생

🔹 예시 코드

// Product interface
class Car {
  constructor(model, year) {
    this.model = model;
    this.year = year;
  }

  getInfo() {
    return `This is a ${this.year} ${this.model}.`;
  }
}

// Factory
class CarFactory {
  createCar(model, year) {
    return new Car(model, year);
  }
}

// Usage
const carFactory = new CarFactory();
const myCar = carFactory.createCar("Tesla Model S", 2022);
console.log(myCar.getInfo()); // Output: This is a 2022 Tesla Model S.
  • CarFactory클래스는 상위 클래스로 중요한 뼈대를 결정하고있습
  • CarFactory에서 createCar 메소드로 요청에 따라 적절한 제품 객체를 생성하고 반환
  • 하지만 Car클래스는 구체적인 제품 객체를 생성하는 기능을 갖고 있지 않습니다.

🔹 의존성 주입

  • CarFactory는 Car의 인스턴스를 직접 생성하는 것이 아니라, Car 클래스에서 생성한 인스턴스를 주입받아 사용하기 때문
  • 이를 통해 CarFactory는 Car 클래스와 결합도를 낮추고, 더 유연하고 확장 가능한 코드를 작성 가능하게 됨.
728x90
반응형
LIST