-
[JS] 디자인 패턴 - 1. FactoryJS 2024. 6. 28. 11:53
팩토리 패턴(Factory Pattern)은 객체 생성 로직을 별도의 팩토리 메서드로 분리하여 객체 생성의 구체적인 과정을 숨기는 디자인 패턴입니다. 이를 통해 코드의 유연성과 재사용성을 높이고, 객체 생성 과정의 복잡성을 줄일 수 있습니다. 팩토리 패턴은 주로 다음과 같은 상황에서 유용합니다.
- 생성할 객체의 구체적인 클래스가 동적으로 결정될 때
- 생성 과정이 복잡하거나 여러 단계가 필요할 때
- 객체 생성 로직을 캡슐화하여 코드의 유지보수성을 높이고자 할 때
팩토리 패턴에는 크게 두 가지 유형이 있습니다:
- 단순 팩토리 패턴 (Simple Factory Pattern)
- 팩토리 메서드 패턴 (Factory Method Pattern)
아래는 자바스크립트로 각각의 팩토리 패턴을 구현한 예제입니다.
단순 팩토리 패턴 (Simple Factory Pattern)
단순 팩토리 패턴은 객체 생성을 전담하는 팩토리 클래스를 만드는 방식입니다. 팩토리 클래스는 클라이언트가 요청한 객체를 생성하고 반환하는 역할을 합니다.
class Car { constructor() { this.type = 'Car'; } drive() { console.log('Driving a car...'); } } class Truck { constructor() { this.type = 'Truck'; } drive() { console.log('Driving a truck...'); } } class SimpleVehicleFactory { static createVehicle(type) { switch (type) { case 'car': return new Car(); case 'truck': return new Truck(); default: throw new Error('Unknown vehicle type'); } } } // 사용 예제 const myCar = SimpleVehicleFactory.createVehicle('car'); myCar.drive(); // Driving a car... const myTruck = SimpleVehicleFactory.createVehicle('truck'); myTruck.drive(); // Driving a truck...
팩토리 메서드 패턴 (Factory Method Pattern)
팩토리 메서드 패턴은 객체 생성의 인터페이스를 정의하고, 실제 객체 생성은 서브클래스에서 처리하도록 하는 방식입니다. 이는 상속을 통해 객체 생성 방식을 변경할 수 있도록 합니다.
class Vehicle { drive() { throw new Error('Drive method must be implemented'); } } class Car extends Vehicle { drive() { console.log('Driving a car...'); } } class Truck extends Vehicle { drive() { console.log('Driving a truck...'); } } class VehicleFactory { createVehicle() { throw new Error('createVehicle method must be implemented'); } } class CarFactory extends VehicleFactory { createVehicle() { return new Car(); } } class TruckFactory extends VehicleFactory { createVehicle() { return new Truck(); } } // 사용 예제 const carFactory = new CarFactory(); const myCar = carFactory.createVehicle(); myCar.drive(); // Driving a car... const truckFactory = new TruckFactory(); const myTruck = truckFactory.createVehicle(); myTruck.drive(); // Driving a truck...
팩토리 패턴의 장점
- 코드 재사용성: 객체 생성 로직을 중앙 집중화하여 재사용성을 높일 수 있습니다.
- 유연성: 클라이언트 코드의 변경 없이 객체 생성 방식을 변경할 수 있습니다.
- 유지보수성: 객체 생성 관련 코드를 한 곳에 모아두면 유지보수가 용이합니다.
팩토리 패턴의 단점
- 복잡성 증가: 클래스가 늘어나고 구조가 복잡해질 수 있습니다.
- 디버깅 어려움: 객체 생성 로직이 캡슐화되므로 디버깅이 어려울 수 있습니다.
팩토리 패턴은 다양한 상황에서 객체 생성 로직을 효율적으로 관리하고, 코드의 유연성과 유지보수성을 높이는 데 유용한 디자인 패턴입니다.
'JS' 카테고리의 다른 글
Html Video set currentTime not working(not change) (0) 2024.08.05 [JS] 디자인 패턴 - 2.Constructor (0) 2024.06.29 [JS]Local Storage VS Session Storage (0) 2024.06.27 [JS]MediaTrackConstraints - 웹캠 프레임 이슈 해결 (0) 2024.05.15 [JS]Mobile web debug for Android (2) 2024.05.15