激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語言 - JavaScript - JavaScript設(shè)計模式之工廠方法模式介紹

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

2021-06-07 21:34junjie JavaScript

這篇文章主要介紹了JavaScript設(shè)計模式之工廠方法模式介紹,本文講解了簡單工廠模式、多個工廠方法模式等內(nèi)容,需要的朋友可以參考下

1. 簡單工廠模式

 

說明:就是創(chuàng)建一個工廠類,里面實現(xiàn)了所對同一個接口的實現(xiàn)類的創(chuàng)建。

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

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

 

1>. 郵件發(fā)送[實現(xiàn)]類

 

 

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

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

 

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

 

2>. 短信發(fā)送[實現(xiàn)]類

 

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

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

 

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

 

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

 

復(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>. 使用這個工廠類:

 

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

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

 

 

2. 多個工廠方法模式

 

說明:多個工廠模式方法,是對普通工廠方法的改進,因為返回實現(xiàn)是依據(jù)傳進去的字符返回,當(dāng)字符輸入錯誤,可能就無法處理,或是處理成錯誤的方式; 而多個工廠模式方法,就可以避免這樣的錯誤;

 

我們對上面的工廠類進行改進:

 

復(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)工廠方法模式

 

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

將工廠類代碼修改如下:

 

復(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();

 

 

工廠方法模式說明

 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费a级黄色片 | 九九热在线视频免费观看 | 狠狠干91 | 国产日产精品一区四区介绍 | 免费99热在线观看 | 中韩毛片 | 毛片在线免费观看完整版 | 亚洲卡通动漫在线观看 | 国产免费让你躁在线视频 | 天天夜夜操操 | 99视频观看 | 久久久久.com| 日本精品久久久一区二区三区 | 欧美人的天堂一区二区三区 | 色av综合在线 | 日韩黄色片在线观看 | 国产成人精品无人区一区 | 欧美日韩亚州综合 | 午夜视频你懂的 | 在线日韩亚洲 | 精品久久久久久久久久久下田 | 久久久久欧美 | av在线中文| 成人一区二区三区在线 | 久久国产在线观看 | 亚洲成a人在线 | av手机免费在线观看 | 黄a大片| a免费视频 | 免费看成人av | 国产一区二区久久精品 | 久久国产免费视频 | 国产一区二区三区在线免费 | 欧美日本一区二区 | 久久精品探花 | 亚洲卡通动漫在线观看 | 亚洲va久久久噜噜噜久久男同 | 久久99精品久久久久久国产越南 | 精品国产观看 | 久草在线手机视频 | 中文字幕欧美在线 |