Factory Pattern (ok)
https://app.gitbook.com/@javascriptuse/s/advanced/design-pattern-trong-javascript
Factory Pattern
là một pattern sử dụng phương thức đặc biệt để tạo các object mà không cần chỉ định rõ chính xác class hay constructor nào,
Pattern này có ích trong trường hợp chúng ta cần khởi tạo nhiều loại object phụ thuộc vào một số điều kiện nhất định. Ví dụ:
class VehicleFactory {
createVehicle(options) {
if (options.vehicleType === 'car') {
return new Car(options);
} else if (options.vehicleType === 'truck') {
return new Truck(options);
}
}
}
class Car {
constructor(options) {
this.door = options.doors || 4;
this.state = options.state || 'brand new';
this.color = options.color || 'white';
}
}
class Truck {
constructor(options) {
this.doors = options.doors || 4;
this.state = options.state || 'used';
this.color = options.color || 'black';
}
}
var vehicle = new VehicleFactory().createVehicle({vehicleType: "car",doors:"Door"});
console.log(vehicle);// Car {door: "Door", state: "brand new", color: "white"}
Ở đây chúng ta tạo các class Car
và Truck
(với một vài giá trị mặc định) là nguyên mẫu cho các object. Sau đó định nghĩa thêm class VehicleFactory
có nhiệm vụ khởi tạo và trả về một trong hai object ở trên dựa vào thuộc tính vehicleType
trong options
const factory = new VehicleFactory();
const car = factory.createVehicle({
vehicleType: 'car',
doors: 4,
color: 'silver',
state: 'Brand New'
});
const truck = factory.createVehicle({
vehicleType: 'truck',
doors: 2,
color: 'white',
state: 'used'
});
// Prints Car {doors: 4, state: "Brand New", color: "silver"}
console.log(car);
// Prints Truck {doors: 2, state: "used", color: "white"}
console.log(truck);
Tạo một object factory
từ class VehicleFactory
. Sau đó chúng ta tạo một object của Car
hoặc Truck
bằng hàm factory.createVehicle
và truyền object options
là tham số bao gồm thuộc tính vehicleType
là car
hoặc truck
.
Last updated