定義:オブジェクト(クラス)に1つのインスタンスのみがあり、アクセスするためのグローバルアクセスポイントを提供することを確認します。
実装の原則:閉鎖を使用して、初めて作成された唯一のインスタンスを保持するローカル変数への参照を維持します。
主に使用されています。グローバルキャッシュ、ログインフローティングウィンドウなど、一意のインスタンスのみが必要な場合。
1。シングルトン以外のパターンオブジェクト(デモなど)のシングルトンパターンを実装する方法:
シングルトンを実装するためにデモに静的メソッドを追加します。
demo.getSingle =(function(){var demo = null; return function(name){if(!demo){demo = new demo(name);} return demo;}})();使用法:
非シングルトンモード:var a = new Demo( 'Peter');
シングルトンモード:
var b1 = demo.getSingle( 'peter'); var b2 = demo.getsingle( 'sufei'); b1 === b2; // true、すべての参照new emo( 'peter'))
プロキシクラスを通じてシングルトンを実装します。
var proxydemo =(function(){var demo = null; return function(name){if(!demo){demo = new demo(name);} return demo;}})();使用法:
非シングルトンモード:var a = new Demo( 'Peter');
シングルトンモード:var b = new proxydemo( 'peter');
2。怠zyなシングルトンパターン:必要なときにのみシングルトンを作成します。
一般的な怠zyなシングルトンを作成する方法は次のとおりです。
var getSingle = function(foo){var single = null; return function(){return single || (single = foo.apply(this、arguments)); }};使用法:
var createLoginlayer = function(){var fragment = document.createdocumentfragment(); var div = document.createelement( 'div'); div.style.display = 'none'; //以下は、divに他のログイン要素を追加します... document.body.appendchild(frag.appendchild(div)); return div;} var createSingLeLoginlayer = getSingle(createLoginlayer); //ユーザーが最初にボタンをクリックしたとき(id = when 'lgbtn')、ログインウィンドウを作成して表示します。ボタンを繰り返しクリックした後、繰り返し作成されません。 document.getElementById( 'lgbtn')。onclick = function(){var lg = createsingleLoginlayer(); lg.style.display = 'block';}添付ファイル:数値のシーケンスの計算など、キャッシュ関数の計算結果
以下は、キャッシュなしで書く方法です。これは非常に遅いです!
function foo(n){results = n <2? n:foo(n -1) + foo(n -2); return results;} console.log(foo(40)); //数秒間計算する必要があります以下はキャッシュライティング方法であり、結果は基本的に即座に作成されます!
var cache = {}; function foo(n){if(!cache [n]){cache [n] = n <2? n:foo(n -1) + foo(n -2); } return cache [n];} console.log(foo(100));より良い文章:
var foo =(function(){var cache = {}; return function(n){if(!cache [n]){cache [n] = n <2?n:foo(n -1) + foo(n -2);} return cache [n];};})(); console.log(foo(100));参考文献:
「JavaScriptモード」
「JavaScriptの設計パターンと開発の実践」
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。