JavaScript 抽象ファクトリーのパターン_JavaScript スキルの詳細な説明

WBOY
リリース: 2016-05-16 16:26:33
オリジナル
1544 人が閲覧しました

抽象的なファクトリ パターンの説明

1. ファクトリ メソッド パターンの問題: ファクトリ メソッド パターンでは、クラスを作成するには、プログラムを拡張する場合、ファクトリ クラスを変更する必要があり、これはクロージャ原則に違反します。拡張は可能ですが、変更は禁止されています。設計には特定の問題があります。

2. 解決方法: 抽象ファクトリ パターンを使用する必要があります。これは、関数クラスとは別にファクトリ クラスを作成することで、以前のコードを変更する必要がなく、関数が拡張されます。

3. ファクトリ パターンは実際には、同じインターフェイスを実装する実装クラスを作成および呼び出すための統一されたファクトリ メソッドです。ただし、JavaScript にはインターフェイスのようなものがないため、この実装層は削除されますが、そのメンバーとメソッドは削除されます。関数クラスは同じである必要があります。

抽象ファクトリーのソースコードの例

1. メール送信クラス:

コードをコピー コードは次のとおりです:

function MailSender() {
This.to = '';
This.title = '';
This.content = '';
}
MailSender.prototype.send = function() {
//本文を送信
}

2. SMS 送信カテゴリ:

コードをコピー コードは次のとおりです:

関数 SmsSender() {
This.to = '';
This.title = '';
This.content = '';
}
SmsSender.prototype.send = function() {
//本文を送信
}

3. ファクトリ インターフェイス クラスは最初にここで作成されましたが、ここでは直接削除されますさまざまな関数クラス ファクトリを作成します;

1>. メールファクトリークラス:

コードをコピー コードは次のとおりです:

関数 MailFactory() {

}
MailFactory.prototype.Produce = function() {
新しい MailSender();
を返します }

2> SMS ファクトリ クラス:

コードをコピーします コードは次のとおりです:

function SmsFactory() {

}
SmsFactory.prototype.Produce = function() {
新しい SmsSender();
を返します }

4. 使用方法:

コードをコピーします コードは次のとおりです:

var Factory = new MailFactory();
var sender = Factory.Produce();
sender.to = 'toname#mail.com';
sender.title = '抽象的なファクトリ パターン';
sender.content = 'コンテンツを送信';
sender.send();

その他の指示

Java や .net C# などのオブジェクト指向言語で使用されるファクトリ パターンはすべてインターフェイスを使用します。インターフェイスは、この関数を適用するためにどのようなメソッドが使用されるか、およびユーザーがそれをどのように使用するかを記述します。 .インターフェース。オブジェクトはクラスの形式で表現され、現実世界のある種の抽象化を表します。おそらく、上記の電子メールの送信、SMS の送信、ショッピング モールでのさまざまなプロモーション方法、動物の世界など、同様の用途が数多くあります。鳥や動物など

ユーザーにインターフェイスを提供しない場合、必然的に実際の関数クラス オブジェクトがユーザーに提供されることになりますが、これは許可されていません。

ファクトリ メソッド パターンと抽象ファクトリ パターンは、この問題を非常にうまく解決できます。ユーザーは、インターフェイスを使用してファクトリ クラスを呼び出して、指定された操作を実行するだけです。これにより、拡張関数クラスとファクトリがさらに簡単に使用できるようになります。クラスは、対応するインターフェイス上に独自のクラスレベルの拡張機能を実装し、他のクラスやメソッドの変更を必要としません。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!