JavaScript設計模式- 簡單工廠模式

簡單工廠模式又叫靜態工廠方法模式,由一個工廠對象決定建立某一種產品對象類的實例。主要用來建立同一類對象。
場景一:
好比體育商店賣體育器材,裏面有不少體育用品,及相關介紹,當咱們想買一個籃球及相關介紹時,只須要溫售貨員,他會幫你找到全部的東西。this

//籃球基類
var Baseketball = function () {
    this.intro = '籃球盛行於美國'
}
Baseketball.prototype ={
    getMember:function () {
        console.log('每一個隊伍須要5名隊員');
    },
    getBallSize:function () {
        console.log('籃球很大');
    }
}
//足球基類
var Football = function () {
    this.intro = '足球在世界範圍內很流行';
}
Football.prototype = {
    getMember:function () {
        console.log('每一個隊伍須要11名隊員');
    },
    getBallSize:function () {
        console.log('足球很大')
    }
}
//網球基類
var Tennis = function () {
    this.intro = '每一年有不少網球系列賽';
}
Tennis.prototype = {
    getMember:function () {
        console.log('每一個隊伍須要1名隊員');
    },
    getBallSize:function () {
        console.log('網球很小');
    }
}
//運動工廠
var SportFactory = function (name) {
    switch (name) {
        case 'NBA':return new Baseketball();
        case 'wordCup':return new Football();
        case 'FrenchOpen':return new Tennis();
    }
}

//爲世界盃創造一個足球,只須要記住運動工廠SportsFactory,調用而且建立
var football = SportFactory('wordCup');
console.log(football);
console.log(football.intro);
football.getMember();

場景二:
登陸模塊和註冊模塊的需求中有許多提示框,能夠利用簡單工廠模式,將提示框互相借鑑prototype

var PopFactory = function (name) {
    switch (name) {
        case 'alert':return new LoginAlert();
        case 'confirm':return new LoginConfirm();
        case 'promt':return new LoginPrompt();
    }
}

可是LoginAlert、LoginConfirm、LoginPrompt有不少是相同的,這時能夠抽取相同的出來,以下:code

function createPop(type,text) {
    //建立一個對象,並對對象拓展屬性和方法
    var o =new Object();
    o.content = text;
    o.show = function () {
        //顯示方法
    }
    if(type == 'alert'){
        //警示框差別部分
    }
    if(type == 'prompt'){
        //提示框差別部分
    }
    if(type == 'confirm'){
        //確認框差別部分
    }
    //將對象返回
    return o;
}
//建立警示框
var userNameAlert = createPop('alert','用戶名只能是26個字母和數字');

這兩種方式建立簡單工廠模式有區別,第一種是經過類實例化對象建立的,第二種是建立一個新對象而後包裝加強其屬性和功能來實現的。對象

相關文章
相關標籤/搜索