亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺析JS抽象工廠模式

 更新時(shí)間:2017年12月14日 14:09:30   投稿:laozhang  
本篇文章主要給大家總結(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)品的類別,也具備該類簇所必備的方法。

相關(guān)文章

  • ES6的Promise用法詳解

    ES6的Promise用法詳解

    本文詳細(xì)講解了ES6的Promise用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • js 操作select和option常用代碼整理

    js 操作select和option常用代碼整理

    使用js過程中難免會(huì)碰到操作select和option的狀況,本人也是深有同感,于是搜集整理一些常用且使用的代碼,可供大家分享
    2012-12-12
  • js在IE與firefox的差異集錦

    js在IE與firefox的差異集錦

    文章匯總了js在IE與Firefox環(huán)境下的差異,以及出現(xiàn)問題如何解決的方法,非常的詳盡,也很實(shí)用,有需要的小伙伴自己拿走
    2014-11-11
  • JavaScript中的原型prototype完全解析

    JavaScript中的原型prototype完全解析

    這篇文章主要介紹了JavaScript中的原型prototype完全解析,prototype可是js界"一切皆對(duì)象"論調(diào)的重要支撐,講解了__proto__屬性和原型鏈等干貨,需要的朋友可以參考下
    2016-05-05
  • js中parseFloat(參數(shù)1,參數(shù)2)定義和用法及注意事項(xiàng)

    js中parseFloat(參數(shù)1,參數(shù)2)定義和用法及注意事項(xiàng)

    今天在看jquery時(shí)用到了parseFloat(第一個(gè)參數(shù),10),對(duì)這兩個(gè)參數(shù)很是疑惑,于是整理搜集了一下,曬出來與大家分享,希望本文對(duì)你有所幫助,感興趣的朋友可以了解下
    2013-01-01
  • JavaScript中的cacheStorage使用詳解

    JavaScript中的cacheStorage使用詳解

    這篇文章主要介紹了JavaScript中的cacheStorage使用詳解,是JavaScript入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • javascript基礎(chǔ)數(shù)據(jù)類型轉(zhuǎn)換教程示例

    javascript基礎(chǔ)數(shù)據(jù)類型轉(zhuǎn)換教程示例

    總結(jié)了javascipt中的數(shù)據(jù)類型之后,我們就了解了,prompt()接收的全是字符串,因此數(shù)據(jù)類型轉(zhuǎn)換就顯得尤為重要,一起來學(xué)習(xí)一下吧
    2022-03-03
  • JavaScript方法和技巧大全

    JavaScript方法和技巧大全

    JavaScript方法和技巧大全...
    2006-12-12
  • JS中==與===操作符的比較

    JS中==與===操作符的比較

    js判斷兩個(gè)變量是否相等的一些操作符的比較。
    2009-03-03
  • javascript中對(duì)Date類型的常用操作小結(jié)

    javascript中對(duì)Date類型的常用操作小結(jié)

    下面小編就為大家?guī)硪黄猨avascript中對(duì)Date類型的常用操作小結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05

最新評(píng)論