我們先簡單說一說工廠模式的優點:
1.工廠類集中了所有對象的創建,便於對象創建的統一管理
2.對象的使用者僅僅是使用產品,實現了單一職責
3.便於擴展,如果新增了一種業務,只需要增加相關的業務對象類和工廠類中的生產業務對象的方法,不需要修改其他的地方。
4.工廠模式也有延遲實例化的作用
代碼演示:
// 建立工廠單體對象
var CarFactory = {
createCar : function(type){
return eval('new ' + type + '()');
}
};
// 類 Benz
function Benz(){}
Benz.prototype.sayHello = function(){
alert('Hello,我是奔馳車...');
};
// 類 Bmw
function Bmw(){}
Bmw.prototype.sayHello = function(){
alert('Hello,我是寶馬車...');
};
// 測試:通過工廠進行實例化
var b1 = CarFactory.createCar('Benz');
var b2 = CarFactory.createCar('Bmw');
b1.sayHello();// Hello,我是奔馳車...
b2.sayHello();// Hello,我是寶馬車...
什麼時候使用工廠模式
以下幾種情景下工廠模式特別有用:
- 對象的構建十分複雜
- 需要依賴具體環境創建不同實例
- 處理大量具有相同屬性的小對象
什麼時候不該用工廠模式
不濫用運用工廠模式,有時候僅僅只是給代碼增加了不必要的複雜度,同時使得測試難以運行下去。