成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript設(shè)計(jì)模式-抽象工廠模式

rockswang / 2572人閱讀

摘要:抽象類是一種聲明但是不能使用的類,當(dāng)使用時(shí)就會(huì)報(bào)錯(cuò)。但是是靈活的,可以在類的方法中手動(dòng)地拋出錯(cuò)誤來模擬抽象類。

抽象類是一種聲明但是不能使用的類,當(dāng)使用時(shí)就會(huì)報(bào)錯(cuò)。在JavaScript中,abstract還是一個(gè)保留字,不能像傳統(tǒng)的面向?qū)ο笳Z言那樣輕松創(chuàng)建。但是JavaScript是靈活的,可以在類的方法中手動(dòng)地拋出錯(cuò)誤來模擬抽象類。如下:

var Car = function(){};
Car.prototype = {
    getPrice:function () {
        return new Error("抽象方法不能調(diào)用");
    },
    getSpeed:function () {
        return new Error("抽象方法不能調(diào)用");
    }
}

創(chuàng)建的car類什么都不能做,創(chuàng)建時(shí)沒有任何屬性,原型的方法也不能使用,但是在繼承時(shí)很有用。因?yàn)楦割惗x了一些必要的方法,如果子類沒有重寫這些方法,那么調(diào)用時(shí)找到這些類就會(huì)報(bào)錯(cuò)。
當(dāng)這些必要的方法從父類繼承過來而沒有具體去重寫實(shí)現(xiàn),那么實(shí)例化對(duì)象便會(huì)調(diào)用父類的這些方法,如果父類有友好提示,則對(duì)于忘記重寫子類的錯(cuò)誤的避免就會(huì)很有幫助。

抽象工廠模式

抽象工廠實(shí)際上是一個(gè)實(shí)現(xiàn)子類繼承父類的,在這個(gè)方法中需要傳遞子類以及要繼承父類的名稱,并且在抽象工廠方法中增加了一次對(duì)抽象類存在性的一次判斷,如果存在,則將子類繼承父類的方法,然后子類通過寄生式繼承。
抽象工廠方法

var VehicleFactory = function (subType,superType) {
    //判斷抽象工廠是否有該抽象類
    if(typeof VehicleFactory[superType] === "function"){
        //緩存類
        function F() {};
        //繼承父類屬性和方法
        F.prototype = new VehicleFactory[superType]();
        //將子類constructor指向子類
        subType.constructor = subType;
        //子類原型繼承"父類”
        subType.prototype = new F();
    }else {
        //不存在該抽象類拋出錯(cuò)誤
        throw new  Error("未創(chuàng)建該抽象類");
    }
}

抽象類

//小汽車抽象類
VehicleFactory.Car = function () {
    this.type = "Car";
};
VehicleFactory.Car.prototype = {
    getPrice:function () {
        return new Error("抽象方法不能調(diào)用");
    },
    getSpeed:function () {
        return new Error("抽象方法不能調(diào)用");
    }
}
//貨車抽象類
VehicleFactory.Truck = function () {
    this.type = "Truck";
};
VehicleFactory.Truck.prototype = {
    getPrice:function () {
        return new Error("抽象方法不能調(diào)用");
    },
    getSpeed:function () {
        return new Error("抽象方法不能調(diào)用");
    }
}

抽象工廠實(shí)現(xiàn)對(duì)抽象類的繼承

//寶馬汽車子類
var BMW = function (price,speed) {
    this.price = price;
    this.speed = speed;
}
//抽象工廠實(shí)現(xiàn)對(duì)Car抽象類的繼承
VehicleFactory(BMW,"Car");
BMW.prototype.getPrice = function () {
    return this.price;
}
BMW.prototype.getSpeed = function () {
    return this.speed;
}
//奔馳汽車子類
var BenzTruck = function(price,trainLoad){
    this.price = price;
    this.trainLoad = trainLoad;
}
//抽象工廠實(shí)現(xiàn)對(duì)Truck抽象類的繼承
VehicleFactory(BenzTruck,"Truck")
BenzTruck.prototype.getPrice = function () {
    return this.price;
}
BenzTruck.prototype.getTrained = function () {
    return this.trainLoad;
}

通過抽象工廠,就知道每個(gè)子類到底是哪一種類別,然后它們也具有了該類所必備的屬性和方法了。
測(cè)試

//測(cè)試
var truck = new BenzTruck(1000,100);
console.log(truck.getPrice());//1000
console.log(truck.type);//Truck
var car = new BMW(10,5);
console.log(car.getPrice());//10
console.log(car.getSpeed());//5

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98037.html

相關(guān)文章

  • JavaScript工廠模式

    摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計(jì)是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因?yàn)樗械木唧w工廠類都具有同一抽象父類。工廠方法模式總結(jié)工廠方法模式是簡(jiǎn)單工廠模式的進(jìn)一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡(jiǎn)單工廠模式 工廠方法模式 抽象工廠模式 1.簡(jiǎn)單工廠模式 簡(jiǎn)單工廠模式:又稱為靜態(tài)工廠方法...

    oujie 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式第一彈-創(chuàng)建型設(shè)計(jì)模式

    摘要:前言接下來將會(huì)為大家介紹設(shè)計(jì)模式中的創(chuàng)建型設(shè)計(jì)模式,在此之前需要掌握一定的對(duì)象繼承基礎(chǔ)。但是如果是工廠方法模式的話,則只需要往工廠方法中添加基類則可以。 前言 接下來將會(huì)為大家介紹設(shè)計(jì)模式中的創(chuàng)建型設(shè)計(jì)模式,在此之前需要掌握一定的JavaScript對(duì)象繼承基礎(chǔ)。 簡(jiǎn)單工廠模式 先說說 什么是簡(jiǎn)單工廠模式:又叫靜態(tài)工廠方法,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例 看著定義有點(diǎn)懵,...

    陳江龍 評(píng)論0 收藏0
  • 從ES6重新認(rèn)識(shí)JavaScript設(shè)計(jì)模式(二): 工廠模式

    摘要:簡(jiǎn)單工廠模式簡(jiǎn)單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...

    Reducto 評(píng)論0 收藏0
  • 從ES6重新認(rèn)識(shí)JavaScript設(shè)計(jì)模式(二): 工廠模式

    摘要:簡(jiǎn)單工廠模式簡(jiǎn)單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...

    szysky 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<