Javascript/자바스크립트 패턴
팩토리 패턴
dongling
2024. 7. 3. 21:54
728x90
반응형
SMALL
🔶 팩토리 패턴(factory pattern)
- 객체 생성 부분을 떼어내 추상화하는 패턴
- 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴
장점- 유연성 증가 : 객체 생성하는 부분(CarFactory)과 객체를 사용하는 부분(Car)을 분리하여 객체 생성과 사용에 대한 유연성을 높
- 유지 보수성 증가 : 캡슐화하여 객체 생성 과정을 추상화 → 한 곳만 고쳐도 되기 때문에 유지보수 및 코드 변경이 용이
- 코드 의존성 낮춤
- 코드 복잡도 증가 : 팩토리 클래스 추가 작성해야하기 때문
- 유지보수 어려움 : 팩토리 클래스의 존재로 인해 객체 생성 로직이 복잡해짐
- 객체의 생성 과정이 추가로 이루어지므로 약간의 성능 손실이 발생
🔹 예시 코드
// 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