国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript設計模式之工廠方法模式介紹

2024-05-06 16:13:06
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript設計模式之工廠方法模式介紹,本文講解了簡單工廠模式、多個工廠方法模式等內容,需要的朋友可以參考下
 
 

1. 簡單工廠模式

 

說明:就是創建一個工廠類,里面實現了所對同一個接口的實現類的創建。

但是好像JavaScript 好像沒有 接口 這號東西,所以我們去掉接口這個層; 當然,我們這里的 實現類 下的成員變量,方法應該都是一樣的;

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

 

1>. 郵件發送[實現]類

 

 

復制代碼代碼如下:

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

 

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

 

2>. 短信發送[實現]類

 

復制代碼代碼如下:

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

 

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

 

3>. 創建一個工廠類:

 

復制代碼代碼如下:

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

 

復制代碼代碼如下:

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

 

 

2. 多個工廠方法模式

 

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

 

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

 

復制代碼代碼如下:

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;
}

 

使用方法:

復制代碼代碼如下:

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

 

 

3. 靜態工廠方法模式

 

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

將工廠類代碼修改如下:

 

復制代碼代碼如下:

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

 

使用方法:

復制代碼代碼如下:

var sender = SendFactory.produceMail();
sender.to = 'toName#mail.com';
sender.title = '郵件發送標題';
sender.content = '發送內容';
sender.send();

 

 

工廠方法模式說明

 

在面向對象思想編程說明,在具有很多產品(現實世界模型,名稱:類名,成員屬性,及操作方法等)需要初始化,即產品需要創建,并且[實現同一接口時],可以使用工廠方法模式; 第一種模式,有輸入類型錯誤的可能,第二模式,需要用時即創建工廠實例;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 定安县| 手游| 青州市| 东港市| 全椒县| 通河县| 佛山市| 乌什县| 丰都县| 旬阳县| 淳化县| 平和县| 类乌齐县| 项城市| 富锦市| 攀枝花市| 德钦县| 嘉兴市| 洪洞县| 泾川县| 东乡| 巴青县| 汶上县| 桦南县| 琼结县| 辽宁省| 偃师市| 应用必备| 化州市| 扎赉特旗| 南木林县| 缙云县| 南靖县| 宜宾市| 岱山县| 闵行区| 海兴县| 灌云县| 广饶县| 宁都县| 永康市|