国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

淺析JS抽象工廠模式

2024-05-06 16:41:24
字體:
供稿:網(wǎng)友

以下就是作者學(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 30baomai5 instanceof VehicleFactory.Car    // true

總結(jié)

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳朔县| 临澧县| 北京市| 舞阳县| 高碑店市| 万全县| 饶阳县| 道真| 玉环县| 龙口市| 龙山县| 桂阳县| 仁怀市| 沙湾县| 阿拉善盟| 龙游县| 阿拉尔市| 常德市| 镇宁| 来宾市| 蚌埠市| 佛教| 河东区| 大港区| 农安县| 油尖旺区| 伽师县| 湟源县| 元谋县| 根河市| 陕西省| 囊谦县| 博客| 抚宁县| 鱼台县| 桃江县| 乐都县| 赤城县| 阜平县| 马山县| 阜平县|