工廠模式:
什麼叫工廠模式,工廠就是大家大腦裡想的那樣,乙個流水線作業的乙個東西,只需要滿足剛需就可以了,乙個人,只幹一件事,最後串起來,就是乙個事件。
首先需要說一下工廠模式。工廠模式根據抽象程度的不同分為三種:
簡單工廠:
簡單工廠說白了,就是需要想到你要幹什麼,要分幾步做,把每個事件全都擺出來,完咯,開始著手建廠,在廠裡把你想幹的事情,全都分列清除,把條件弄好,好知道來需求的時候,知道哪些人幹活。最後就是客戶提的需求了,根據需求去辦事。
**案例:
/*** 寶馬
*/var baoma = function ()
}/**
* 奧迪
*/var aodi = function ()
}//造寶馬事件
var baoma = new baoma();
// 執行造寶馬事件
baoma.play();
// 造奧迪事件
var aodi = new aodi();
// 執行造奧迪事件
aodi.play();
/** * 造小汽車工廠
*/var ball = function(name)
}// 客戶需求要寶馬
var baoma = ball('寶馬');
// 來開造
baoma.play();
// 客戶需要奧迪
var aodi = ball('奧迪');
//來開造
aodi.play();
工廠方法:
工廠方法說白了就是在工廠裡面去寫方法,在外部寫乙個公用的方法去調取工廠的獨有方法,來實現客戶的需求
**如下:
// 安全模式建立工廠類var ball = function (type,name) else
}// 工廠原型中設定建立所有型別資料物件的基類
ball.prototype =
},aodi: function(name)
},}// 客戶需求
var baoma = new ball('baoma','寶馬');
// 開始建造
baoma.play();
// 客戶需求
var aodi = new ball('aodi','奧迪');
// 開始建造
aodi.play();
/* baoma
我在建造寶馬
aodi
我在生產奧迪
*/
對比簡單模式和方法模式,方法模式的**,要比簡單工廠模式的**要少的多,最後只需要在工廠裡面去新增方法,去呼叫就行了,不要再往開發零件區去填寫內容了。
抽象工廠:
抽象工廠,說白了比較抽象的,說是抽象,其實看著也差不多應改,在開始的時候建乙個工廠,裡面去判斷這個方法,有這個方法的時候就開始繼承,指向,繼承,最後執行事件,感覺**老多了,不易理解,要建乙個私有類,完咯在工廠中找到這個類,取到類的值,用值去跑建造方法。最後當然就是需求的提交,和程式的執行了
// # 抽象工廠模式var sport = function(subtype, supertype) ;
// 繼承父類屬性和方法
f.prototype = new sport[supertype]();
// 將子類constructor 指向子類
subtype.constructor = subtype;
// 子類原型繼承 「父類」
subtype.prototype = new f();
}else
}// 寶馬抽象類
sport.baoma = function ()
sport.baoma.prototype =
}// 奧迪抽象類
sport.aodi = function ()
sport.aodi.prototype =
}// 大眾抽象類
sport.dazhong = function ()
sport.dazhong.prototype =
}// 寶馬類
var basketball = function (name) ;
// 抽象工廠實現對寶馬的繼承
sport(basketball,'baoma');
basketball.prototype.play = function ()
// 奧迪類
var weightlifting = function (name) ;
// 抽象工廠實現對奧迪的繼承
sport(weightlifting,'aodi');
weightlifting.prototype.play = function ()
// 大眾類
var running = function (name) ;
// 抽象工廠實現對大眾的繼承
sport(running,'dazhong');
running.prototype.play = function ()
// 抽象工廠模式實現
var basketball = new basketball('寶馬');
console.log(basketball.type);//baoma
basketball.play();
var weightlifting = new weightlifting('奧迪');
console.log(weightlifting.type);//aodi
weightlifting.play();
var running = new running('大眾');
console.log(running.type);//ball
running.play();
/** 輸出結果
* baoma
* 我在造寶馬
* aodi
* 我在造奧迪
* dazhong
* 我在造大眾
*/
在vue專案中使用,大家熟悉的莫過於路由了,其實路由頁面的**就應該算是乙個簡單工廠,但沒有那些複雜的方法,
import vue from 'vue'import router from 'vue-router'
import maintab from '@/views/maintab'
import personregister from '@/views/personregister'
vue.use(router)
export default new router(,,,
,,]}
]})
在上面的**中就可以看出來,他的子路由就是一塊一塊的,就好比是工廠模式的上面的每一方法一樣,我也不知道這樣巢狀這說對不對,我感覺差不多吧,你想新增頁面的話,只需要在裡面寫乙個子路由就行了。
抽象工廠模式的優點:
抽象工廠模式的缺點:
抽象工廠模式的適用情況:
在以下情況下可以使用抽象工廠模式:
抽象工廠模式總結
js工廠模式
設計工廠模式是為了建立物件。通常在類或者類的靜態方法中實現,具有兩個目標。其中乙個是 當建立相似物件時執行重複操作 另外乙個目標是 編譯時不知道具體型別 類 的情況下,為工廠客戶提供一種建立物件的介面。實現如下 父構造器 function carmaker 在原型中新增共享的方法 carmaker....
js設計模式 工廠模式
一.介紹 工廠模式主要出現在物件導向建立例項的過程中,其本質是為了更方便生成例項,因此 在遇到使用new時,就要是否要使用工廠模式 二.實現 1.uml類圖 2.實現 class product init fn1 fn2 class creator 測試 let creator new creato...
js設計模式 工廠模式
一句話總結 在建構函式外面增加乙個函式,每次建立的時候,呼叫外層函式,不用去管建構函式的內部是如何實現的。去麵館吃麵,給老闆說 來碗雜醬麵 老闆把麵端上來。在這個過程中,我們不會去關心,面是怎麼做出來的,是如何做的。給老闆說 來碗雜醬麵 就給你做雜醬麵,來碗番茄面,就給你做番茄面。這就是乙個工廠模式...