抽象的な工場パターンの説明
1。工場メソッドモデルの問題:ファクトリーメソッドモデルでは、クラスの作成には、工場クラスを通過する必要があります。プログラムを拡張したい場合は、工場クラスを変更する必要があります。これは、閉鎖原則に違反し、拡張のためにオープンし、修正のために閉鎖します。デザインには特定の問題があります。
2。それを解決する方法:抽象的な工場モデルを使用する必要があります。これは、以前のコードを変更して関数を展開する必要がないように、機能クラスのファクトリクラスを個別に作成することを意味します。
3.工場モデルは、実際に同じインターフェイスを実装する実装クラスを実装する統一ファクトリー方法への呼び出しを作成していますが、JavaScriptにはインターフェイス番号がないため、この実装層は削除されますが、BIT関数クラスのメンバーとメソッドは同じでなければなりません。
抽象的なファクトリーソースコードの例
1。電子メール送信クラス:
コードコピーは次のとおりです。
function mailsender(){
this.to = '';
this.title = '';
this.content = '';
}
mailsender.prototype.send = function(){
//ボディを送信します
}
2。SMS送信クラス:
コードコピーは次のとおりです。
function smssender(){
this.to = '';
this.title = '';
this.content = '';
}
smssender.prototype.send = function(){
//ボディを送信します
}
3。これはもともと工場のインターフェイスクラスですが、ここで削除されます。さまざまな機能クラスの工場を直接作成します。
1>。メール工場のカテゴリ:
コードコピーは次のとおりです。
function mailfactory(){
}
mailfactory.prototype.produce = function(){
new MailSender()を返します。
}
2>。 SMSファクトリーカテゴリ:
コードコピーは次のとおりです。
関数smsfactory(){
}
smsfactory.prototype.produce = function(){
new smssender()を返します。
}
4。使用方法:
コードコピーは次のとおりです。
var factory = new MailFactory();
var sender = factory.produce();
sender.to = 'toname#mail.com';
sender.title = '抽象ファクトリーパターン';
sender.content = 'content'を送信 ';
sender.send();
その他の指示
Javaや.NET C#などのオブジェクト指向言語で使用される工場モードは、インターフェイスを使用します。インターフェイスは、さまざまな外部ユーザーに公開するための利用可能な方法であり、この関数を適用する方法と、ユーザーがこのインターフェイスを使用する方法を説明します。オブジェクトはクラスの形で表現され、現実の世界での抽象化を表します。おそらく、このシーンには、電子メール送信、SMSの送信、モール内のさまざまなプロモーション方法、動物の世界のさまざまな鳥や獣など、多くの同様のアプリケーションがあります。
ユーザーにインターフェイスの形でユーザーの使用を提供しない場合、ユーザーに実際の機能クラスオブジェクトを提供し、ユーザーはクラスオブジェクトを自由に変更および拡張できますが、これは許可されていません。
ファクトリーメソッドモードと抽象的な工場モードは、そのような問題をうまく解決できます。ユーザーはインターフェイスを使用して工場クラスを呼び出して指定された操作を実行できます。抽象ファクトリーモードはさらに拡張機能を使用し、機能クラスとファクトリークラスは、対応するインターフェイスにそれぞれのクラスレベルの拡張機能を実装し、他のクラスまたはメソッドの変更は含まれません。