JavaScript設計モードの単品モード紹介

3545 ワード

単品モードの説明
1.説明:単品モードは、静的なアクセスでインスタンス化されたオブジェクトであり、このオブジェクトは唯一のエントリ、インスタンス化されたオブジェクト、またはインスタンス化されるオブジェクトしかアクセスできません.Javaなどのオブジェクト向け言語Net C#のようなサービス側の動的言語では、クラスの操作が順調に行われることを保証し、並列操作がデータを混乱させることを避けることができる.
2.単品モードのメリット:
1>. newの操作を減らして、メモリの頻繁な操作を加速しないようにして、メモリを占有します;2>. できるだけ大きなシステムのオブジェクトのオーバーヘッドを減らす.3>. 以上のように、並列処理によるデータ異常現象を回避するために、いくつかのタイプの操作に順序の正確な操作があることを保障することができる.
もちろん上記のメリットは、サービス側の言語を話すことです.javascriptという弱いタイプの言語では、スクリプトが自分のクライアント側で操作されているので、操作の衝突の問題はありません.サーバー全体があなた一人で使っているのと同じで、心配しないでください.あなたのデータは他の誰かに操作される問題です.
インスタンスソース
 
  
var Singleton = {
    instance: null,
    MailSender: function() {
        var self = this;
        self.to = '';
        self.title = '';
        self.content = '';
        self.send = function() {
             //send body
        }
    },
    getInstance : function() {
        if (this.instance == null) {
            this.instance = new Singleton.MailSender();
        }
        return this.instance;
    }
}

使用方法:
 
  
var mail = Singleton.getInstance();
mail.to = 'toname#mail.com';
mail.title = ' ';
mail.content = ' ';

mail.send();


DWZのようなリッチUIフレームのようなグローバルフレームワークのように、グローバルなSingletonを作成すると、Singleton.Instanceには値があるので、これ以上作成する必要はありません.
もちろん、このように書くと、サービス側の言語と同じように明らかになります.
 
  
Singleton.getInstance().to = 'toname#mail.com';
Singleton.getInstance().title = ' ';
Singleton.getInstance().content = ' ';

Singleton.getInstance().send();


その他の実例
単品モードはどこで、役に立つのでしょうか?例えば、オペレーティングサーバ上の統一されたプロファイルがある場合、例えば大規模な同時操作のように、先着順に注意する必要がある場合、例えば取引所のオペレーティングプロセス記録などは、単一のモードで操作することができます.
また、単品モードの方式:
1.上の怠け者のやり方
2.空腹棒方式:
 
  
var Singleton = {
    instance : new Singleton.MailSender(),
    MailSender : function() {
      var self = this;
      self.to = '';
      self.title = '';
      self.content = '';
      self.send = function() {
          //send body
      }
   },
   getInstance : function() {
        return this.instance;
   }
}

使い方は同じです.
閉パッケージ方式でシングルモードを作成し、instanceオブジェクトを非表示にする
1.コード:
 
  
var Singleton = (function() {
    var instance = null;
    function MailSender() {
       this.to = '';
       this.title = '';
       this.content = '';
    }
    MailSender.prototype.send = function() {
       //send body
    }
    return {
       getInstance : function() {
          if (instance == null) {
             instance = new MailSender();
          }
          return instance;
       }
    }
})();

2.使用方法:
 
  
//
var mail = Singleton.getInstance();
mail.to = 'toname#mail.com';
mail.title = ' ';
mail.content = ' ';

mail.send();