欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript設(shè)計(jì)模式之工廠方法模式介紹

 更新時(shí)間:2014年12月28日 10:46:29   投稿:junjie  
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之工廠方法模式介紹,本文講解了簡(jiǎn)單工廠模式、多個(gè)工廠方法模式等內(nèi)容,需要的朋友可以參考下

1. 簡(jiǎn)單工廠模式

說(shuō)明:就是創(chuàng)建一個(gè)工廠類(lèi),里面實(shí)現(xiàn)了所對(duì)同一個(gè)接口的實(shí)現(xiàn)類(lèi)的創(chuàng)建。

但是好像JavaScript 好像沒(méi)有 接口 這號(hào)東西,所以我們?nèi)サ艚涌谶@個(gè)層; 當(dāng)然,我們這里的 實(shí)現(xiàn)類(lèi) 下的成員變量,方法應(yīng)該都是一樣的;

例如:這時(shí)舉短信發(fā)送跟郵件發(fā)送的例子;

1>. 郵件發(fā)送[實(shí)現(xiàn)]類(lèi)

復(fù)制代碼 代碼如下:

function MailSender() {
    this.to = '';
    this.title = '';
    this.content = '';
}

MailSender.prototype.send = function() {
    //send body
}

2>. 短信發(fā)送[實(shí)現(xiàn)]類(lèi)

復(fù)制代碼 代碼如下:

function SmsSender() {
    this.to = '';
    this.title = '';
    this.content = '';
}

SmsSender.prototype.send = function() {
    //send body
}

3>. 創(chuàng)建一個(gè)工廠類(lèi):

復(fù)制代碼 代碼如下:

function SendFactory() {
    this.sender = null;
}

SendFactory.prototype.produce = function(type) {
    var me = this;
    if (type == 'mail') {
        me.sender = new MailSender();
    } else if (type == 'sms') {
        me.sender = new SmsSender();
    }
   return me.sender;
}

4>. 使用這個(gè)工廠類(lèi):

復(fù)制代碼 代碼如下:

var factory = new SendFactory();
var sender = factory.produce('mail'); //sms
sender.to = 'toName#mail.com';
sender.title = '郵件測(cè)試標(biāo)題!';
sender.content = '發(fā)送內(nèi)容';
sender.send();

2. 多個(gè)工廠方法模式

說(shuō)明:多個(gè)工廠模式方法,是對(duì)普通工廠方法的改進(jìn),因?yàn)榉祷貙?shí)現(xiàn)是依據(jù)傳進(jìn)去的字符返回,當(dāng)字符輸入錯(cuò)誤,可能就無(wú)法處理,或是處理成錯(cuò)誤的方式; 而多個(gè)工廠模式方法,就可以避免這樣的錯(cuò)誤;

我們對(duì)上面的工廠類(lèi)進(jìn)行改進(jìn):

復(fù)制代碼 代碼如下:

function SendFactory() {
    this.sender = null;
}

SendFactory.prototype.produceMail = function() {
    var me = this;
    me.sender = new MailSender();
    return me.sender;
}

SendFactory.prototype.produceSms = function() {
    var me = this;
    me.sender = new SmsSender();
    return me.sender;
}

使用方法:

復(fù)制代碼 代碼如下:

var factory = new SendFactory();
var sender = factory.produceSms(); //produceMail
sender.to = 'toName#xxxxx';
sender.title = '短信發(fā)送方法標(biāo)題';
sender.content = '發(fā)送內(nèi)容';
sender.send();

3. 靜態(tài)工廠方法模式

說(shuō)明:將上面的 多個(gè)工廠方法模式 的方法改為靜態(tài)標(biāo)識(shí)即可,使之不必對(duì) SendFactory 進(jìn)行實(shí)例化;

將工廠類(lèi)代碼修改如下:

復(fù)制代碼 代碼如下:

var SendFactory = {
    produceMail : function() {
        return new MailSender();
    },
    produceSms : function() {
        return new SmsSender();
    }
}

使用方法:

復(fù)制代碼 代碼如下:

var sender = SendFactory.produceMail();
sender.to = 'toName#mail.com';
sender.title = '郵件發(fā)送標(biāo)題';
sender.content = '發(fā)送內(nèi)容';
sender.send();

工廠方法模式說(shuō)明

在面向?qū)ο笏枷刖幊陶f(shuō)明,在具有很多產(chǎn)品(現(xiàn)實(shí)世界模型,名稱(chēng):類(lèi)名,成員屬性,及操作方法等)需要初始化,即產(chǎn)品需要?jiǎng)?chuàng)建,并且[實(shí)現(xiàn)同一接口時(shí)],可以使用工廠方法模式; 第一種模式,有輸入類(lèi)型錯(cuò)誤的可能,第二模式,需要用時(shí)即創(chuàng)建工廠實(shí)例;

相關(guān)文章

  • 淺談JS中的常用選擇器及屬性、方法的調(diào)用

    淺談JS中的常用選擇器及屬性、方法的調(diào)用

    下面小編就為大家?guī)?lái)一篇淺談JS中的常用選擇器及屬性、方法的調(diào)用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 詳談JS中數(shù)組的迭代方法和歸并方法

    詳談JS中數(shù)組的迭代方法和歸并方法

    下面小編就為大家?guī)?lái)一篇詳談JS中數(shù)組的迭代方法和歸并方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 20分鐘成功編寫(xiě)bootstrap響應(yīng)式頁(yè)面 就這么簡(jiǎn)單

    20分鐘成功編寫(xiě)bootstrap響應(yīng)式頁(yè)面 就這么簡(jiǎn)單

    這篇文章主要教大家如何在20分鐘內(nèi)成功編寫(xiě)bootstrap響應(yīng)式頁(yè)面,其實(shí)很簡(jiǎn)單,培養(yǎng)大家分分鐘開(kāi)發(fā)出一個(gè)高大上的頁(yè)面能力,感興趣的小伙伴們可以參考一下
    2016-05-05
  • H5實(shí)現(xiàn)手機(jī)拍照和選擇上傳功能

    H5實(shí)現(xiàn)手機(jī)拍照和選擇上傳功能

    這篇文章主要為大家詳細(xì)介紹了H5實(shí)現(xiàn)手機(jī)拍照和選擇上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • js對(duì)象實(shí)現(xiàn)數(shù)據(jù)分頁(yè)效果

    js對(duì)象實(shí)現(xiàn)數(shù)據(jù)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了js對(duì)象實(shí)現(xiàn)數(shù)據(jù)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 定單管理上 JS表格排序

    定單管理上 JS表格排序

    定單管理上 JS表格排序...
    2006-10-10
  • javascript jq 彈出層實(shí)例

    javascript jq 彈出層實(shí)例

    javascript jq 彈出提示效果實(shí)現(xiàn)的方法有很多,可能會(huì)在某些地方看到過(guò),下面為大家演示個(gè)示例介紹下如何實(shí)現(xiàn)jq 彈出層,感興趣的朋友可以參考下
    2013-08-08
  • JavaScript使用canvas繪制坐標(biāo)和線

    JavaScript使用canvas繪制坐標(biāo)和線

    這篇文章主要為大家詳細(xì)介紹了JavaScript使用canvas繪制坐標(biāo)和線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • js刪除數(shù)組元素、清空數(shù)組的簡(jiǎn)單方法(必看)

    js刪除數(shù)組元素、清空數(shù)組的簡(jiǎn)單方法(必看)

    下面小編就為大家?guī)?lái)一篇js刪除數(shù)組元素、清空數(shù)組的簡(jiǎn)單方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • javascript實(shí)現(xiàn)倒計(jì)時(shí)效果

    javascript實(shí)現(xiàn)倒計(jì)時(shí)效果

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)倒計(jì)時(shí)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評(píng)論