什麼是工廠方法模式?
工廠方法模式定義了一個建立物件的介面,但讓子類別決定要實例化哪個類別。這種模式將物件的建立延遲到子類別,符合開放封閉原則。
核心概念
- 抽象工廠介面:定義建立物件的抽象方法
- 具體工廠類別:每個產品都有自己的工廠
- 開放封閉原則:新增產品時不需要修改現有程式碼
實際範例
// 產品介面
interface Vehicle {
drive(): void;
}
// 具體產品
class Car implements Vehicle {
drive(): void {
console.log('Driving a car');
}
}
class Bike implements Vehicle {
drive(): void {
console.log('Riding a bike');
}
}
// 抽象工廠介面
interface VehicleFactory {
create(): Vehicle;
}
// 具體工廠類別
class CarFactory implements VehicleFactory {
create(): Vehicle {
return new Car();
}
}
class BikeFactory implements VehicleFactory {
create(): Vehicle {
return new Bike();
}
}
// 使用方式
const carFactory = new CarFactory();
const bikeFactory = new BikeFactory();
const car = carFactory.create();
const bike = bikeFactory.create();
car.drive(); // 輸出: Driving a car
bike.drive(); // 輸出: Riding a bike