js的工廠模式

2022-05-23 17:18:11 字數 3746 閱讀 9330

工廠模式:

什麼叫工廠模式,工廠就是大家大腦裡想的那樣,乙個流水線作業的乙個東西,只需要滿足剛需就可以了,乙個人,只幹一件事,最後串起來,就是乙個事件。

首先需要說一下工廠模式。工廠模式根據抽象程度的不同分為三種:

簡單工廠:

簡單工廠說白了,就是需要想到你要幹什麼,要分幾步做,把每個事件全都擺出來,完咯,開始著手建廠,在廠裡把你想幹的事情,全都分列清除,把條件弄好,好知道來需求的時候,知道哪些人幹活。最後就是客戶提的需求了,根據需求去辦事。

**案例:

/**

* 寶馬

*/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設計模式 工廠模式

一句話總結 在建構函式外面增加乙個函式,每次建立的時候,呼叫外層函式,不用去管建構函式的內部是如何實現的。去麵館吃麵,給老闆說 來碗雜醬麵 老闆把麵端上來。在這個過程中,我們不會去關心,面是怎麼做出來的,是如何做的。給老闆說 來碗雜醬麵 就給你做雜醬麵,來碗番茄面,就給你做番茄面。這就是乙個工廠模式...