ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript デザインパターンのファクトリーメソッドパターンの紹介

JavaScript デザインパターンのファクトリーメソッドパターンの紹介

PHPz
PHPzオリジナル
2016-05-16 16:24:021510ブラウズ

この記事では、JavaScript デザインパターンにおけるファクトリメソッドパターンの導入を中心に、簡単なファクトリメソッドパターン、複数のファクトリメソッドパターンなどを解説しています。必要な方は参考にしてください。

1. 単純なファクトリ パターン

説明: 同じインターフェイスの実装クラスの作成を実装するファクトリ クラスを作成します。

しかし、JavaScript にはインターフェースのようなものがないようなので、インターフェース層を削除します。もちろん、実装クラスのメンバー変数とメソッドは同じである必要があります。 >例: テキスト メッセージ送信と電子メール送信の例を示します。

1. 電子メール送信 [実装] クラス

2. SMS 送信 [実装] クラス
function MailSender() {    
this.to = '';    
this.title = '';    
this.content = '';
}
MailSender.prototype.send = function() {    
//send body
}

3. ファクトリ クラスを作成します:
function SmsSender() {
    this.to = '';
    this.title = '';
    this.content = '';
}

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

4. このファクトリ クラスを使用します:
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;
}

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;
}
3. 静的ファクトリ メソッド パターン

var factory = new SendFactory();
var sender = factory.produceSms(); //produceMail
sender.to = 'toName#xxxxx';
sender.title = '短信发送方法标题';
sender.content = '发送内容';
sender.send();
説明: 上記の複数のファクトリ メソッド パターンのメソッドを静的識別子に変更するだけで、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 ビデオ チュートリアル をご覧ください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。