首頁 > web前端 > js教程 > 主體

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

PHPz
發布: 2018-09-30 09:06:47
原創
1458 人瀏覽過

這篇文章主要介紹了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();
登入後複製

工廠方法模式說明

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

以上就是本章的全部內容,更多相關教程請訪問JavaScript視頻教程

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!