Factory Design Pattern

工廠模式(Factory Design Pattern)的目的,是執行一個Method,然後就可以回傳一個物件,讓使用者不用 new ,也能得到物件實體。這件事在 JavaScript 非常容易達成:

const carFactory = function(brand){
return { brand }
}
const car = carFactory('bmw');
console.log(car); // Object { brand: 'bmw' }

以下是較復雜的實作,有1個腳踏車的父類別,和2個腳踏車的工廠。跟據輸入的 品牌名稱,輸出對應的腳踏車物件。

以下是 改寫為 TypeScript 的版本,讓結構更清楚。

先將父類別 Bike 宣告成抽象類別(abstract class),目的是讓 Bike 不能被直接生成物件。定義 brandname 為抽象屬性,讓 Bike 被擴充的同時,也要實作 這個屬性。