最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

詳細(xì)為你解析JS抽象工廠模式

來源:懂視網(wǎng) 責(zé)編:小OO 時(shí)間:2020-11-27 19:48:45
文檔

詳細(xì)為你解析JS抽象工廠模式

以下就是在學(xué)習(xí)中遇到的問題以及代碼實(shí)例,最后還給大家關(guān)于JS抽象工廠模式的學(xué)習(xí)做了總結(jié)。抽象工廠模式(Abstract Factory)就是通過類的抽象使得業(yè)務(wù)適用于一個(gè)產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)某一類產(chǎn)品的實(shí)例。JS中是沒有直接的抽象類的,abstract是個(gè)保留字,但是還沒有實(shí)現(xiàn),因此我們需要在類的方法中拋出錯(cuò)誤來模擬抽象類,如果繼承的子類中沒有覆寫該方法而調(diào)用,就會(huì)拋出錯(cuò)誤。const Car = function() { }Car.prototype.getPrice = function() {return new Error(';抽象方法不能調(diào)用';)}。實(shí)現(xiàn);
推薦度:
導(dǎo)讀以下就是在學(xué)習(xí)中遇到的問題以及代碼實(shí)例,最后還給大家關(guān)于JS抽象工廠模式的學(xué)習(xí)做了總結(jié)。抽象工廠模式(Abstract Factory)就是通過類的抽象使得業(yè)務(wù)適用于一個(gè)產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)某一類產(chǎn)品的實(shí)例。JS中是沒有直接的抽象類的,abstract是個(gè)保留字,但是還沒有實(shí)現(xiàn),因此我們需要在類的方法中拋出錯(cuò)誤來模擬抽象類,如果繼承的子類中沒有覆寫該方法而調(diào)用,就會(huì)拋出錯(cuò)誤。const Car = function() { }Car.prototype.getPrice = function() {return new Error(';抽象方法不能調(diào)用';)}。實(shí)現(xiàn);

本篇文章主要給大家總結(jié)了一下作者在學(xué)習(xí)JS抽象工廠模式時(shí)的經(jīng)驗(yàn)和總結(jié),有興趣的朋友跟著學(xué)習(xí)下吧。

以下就是我在學(xué)習(xí)中遇到的問題以及代碼實(shí)例,最后還給大家關(guān)于JS抽象工廠模式的學(xué)習(xí)做了總結(jié)。

抽象工廠模式(Abstract Factory)就是通過類的抽象使得業(yè)務(wù)適用于一個(gè)產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)某一類產(chǎn)品的實(shí)例。

JS中是沒有直接的抽象類的,abstract是個(gè)保留字,但是還沒有實(shí)現(xiàn),因此我們需要在類的方法中拋出錯(cuò)誤來模擬抽象類,如果繼承的子類中沒有覆寫該方法而調(diào)用,就會(huì)拋出錯(cuò)誤。

const Car = function() { }
Car.prototype.getPrice = function() {return new Error('抽象方法不能調(diào)用')}

實(shí)現(xiàn)

面向?qū)ο蟮恼Z言里有抽象工廠模式,首先聲明一個(gè)抽象類作為父類,以概括某一類產(chǎn)品所需要的特征,繼承該父類的子類需要實(shí)現(xiàn)父類中聲明的方法而實(shí)現(xiàn)父類中所聲明的功能:

/**
* 實(shí)現(xiàn)subType類對(duì)工廠類中的superType類型的抽象類的繼承
* @param subType 要繼承的類
* @param superType 工廠類中的抽象類type
*/
const VehicleFactory = function(subType, superType) {
 if (typeof VehicleFactory[superType] === 'function') {
 function F() {
 this.type = '車輛'
 } 
 F.prototype = new VehicleFactory[superType]()
 subType.constructor = subType
 subType.prototype = new F() // 因?yàn)樽宇恠ubType不僅需要繼承superType對(duì)應(yīng)的類的原型方法,還要繼承其對(duì)象屬性
 } else throw new Error('不存在該抽象類')
}
VehicleFactory.Car = function() {
 this.type = 'car'
}
VehicleFactory.Car.prototype = {
 getPrice: function() {
 return new Error('抽象方法不可使用')
 },
 getSpeed: function() {
 return new Error('抽象方法不可使用')
 }
}
const BMW = function(price, speed) {
 this.price = price
 this.speed = speed
}
VehicleFactory(BMW, 'Car') // 繼承Car抽象類
BMW.prototype.getPrice = function() { // 覆寫getPrice方法
 console.log(`BWM price is ${this.price}`)
}
BMW.prototype.getSpeed = function() {
 console.log(`BWM speed is ${this.speed}`)
}
const baomai5 = new BMW(30, 99)
baomai5.getPrice() // BWM price is 30
baomai5 instanceof VehicleFactory.Car // true

總結(jié)

通過抽象工廠,就可以創(chuàng)建某個(gè)類簇的產(chǎn)品,并且也可以通過instanceof來檢查產(chǎn)品的類別,也具備該類簇所必備的方法。

上面是我整理給大家的,希望今后會(huì)對(duì)大家有幫助。

相關(guān)文章:

動(dòng)態(tài)加載JS文件三種方式總結(jié)

js支持post請(qǐng)求的跨域方法總結(jié)

Vue.js計(jì)算與偵聽器屬性使用詳解

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳細(xì)為你解析JS抽象工廠模式

以下就是在學(xué)習(xí)中遇到的問題以及代碼實(shí)例,最后還給大家關(guān)于JS抽象工廠模式的學(xué)習(xí)做了總結(jié)。抽象工廠模式(Abstract Factory)就是通過類的抽象使得業(yè)務(wù)適用于一個(gè)產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)某一類產(chǎn)品的實(shí)例。JS中是沒有直接的抽象類的,abstract是個(gè)保留字,但是還沒有實(shí)現(xiàn),因此我們需要在類的方法中拋出錯(cuò)誤來模擬抽象類,如果繼承的子類中沒有覆寫該方法而調(diào)用,就會(huì)拋出錯(cuò)誤。const Car = function() { }Car.prototype.getPrice = function() {return new Error(';抽象方法不能調(diào)用';)}。實(shí)現(xiàn);
推薦度:
標(biāo)簽: 為你 為您 抽象類
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top