JavaScript設計モデルの抽象工場モデル紹介

2380 ワード

抽象ファクトリモードの説明
1.工场メソッドモデルの问题:工场メソッドモデルでは、クラスを作成するには工场クラスを通じて、プログラムを拡張するには、工场クラスを修正しなければなりません.これは闭包の原则に反して、拡張に対して开放して、修正に対して闭锁します.設計に一定の問題がある.2.どのように解決するか:抽象的なファクトリモードを使用するには、機能クラスに対してファクトリクラスを個別に作成し、前のコードを変更する必要がなく、機能を拡張します.3.ファクトリモードは実は同じインタフェースを実現する実現クラスの統一ファクトリ方式に対して呼び出しを作成するが、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.ここはもともと工場インタフェースクラスを作成していたので、ここでは削除しました.各機能類工場を直接作成する.
1>. メールファクトリクラス:
 
  
function MailFactory() {
   
}
MailFactory.prototype.produce = function() {
    return new MailSender();
}

2>. メール工場類:
 
  
function SmsFactory() {
   
}
SmsFactory.prototype.produce = function() {
    return new SmsSender();
}

4.使用方法:
 
  
var factory = new MailFactory();
var sender = factory.produce();
sender.to = 'toname#mail.com';
sender.title = ' ';
sender.content = ' ';
sender.send();

その他の説明
javaなどのオブジェクト向け言語では、.NetC#が使用するファクトリモードは、すべてインタフェースを使用しており、インタフェースは外部に各種ユーザーに露出する利用可能な方法であり、この機能アプリケーションにはどんな方法があるのか、ユーザーがどのようにこのインタフェースを使用すべきかを説明している.対象は類の形式で表現して、現実世界の中のある種の抽象を代表して、シーンは多くの類似の応用があるかもしれなくて、例えば上のメールの送信、メールの送信、更に例えばデパートの中の各種の販促手段、および動物の世界の中の各種の鳥や獣など..
インタフェース形式でユーザーの使用を提供しない場合は、実際の機能クラスオブジェクトをユーザーに暴露する必要があります.ユーザーは任意にクラスオブジェクトを修正したり拡張したりすることはできません.これは許可されません.
工場メソッドモードと抽象工場モードはこのような問題をよく解決することができ、ユーザーはインタフェースを使用して工場クラスを呼び出し、規定の操作を行うしかない.抽象ファクトリモードはさらに拡張機能を使用することが容易になり、機能クラスとファクトリクラスは対応するインタフェースを実現する上でそれぞれのクラスレベルの拡張を実現し、他のクラスや方法に変更することはありません.
もちろんjavascriptという言語は、そうすることはできません.プログラマーは自律しなければなりません.