js単一の例モードの詳細な解説例
11380 ワード
この文章は主に一例のパターンと使用シーンを紹介しています.3つの例を参考にしてください.
単例とは何ですか
単一の例は、1つのクラスがあり、1つのインスタンスだけが必要であり、全体的なアクセスポイントを提供する.したがって、従来のコントローラをバイパスして、使用者に使用させることができるようにします.いくつかの例に関係なく使用しています.これは設計者の責任です.
使用シーン
類比
一つのグループの組長に似ています.しばらくの間には組長が一人しかいません.組員の仕事、割り当てと調整と組員の仕事を指定するグループ長がいます.
例1:これは最も簡単な一例であり、key、valueの形式で属性と方法を記憶する.
単例とは何ですか
単一の例は、1つのクラスがあり、1つのインスタンスだけが必要であり、全体的なアクセスポイントを提供する.したがって、従来のコントローラをバイパスして、使用者に使用させることができるようにします.いくつかの例に関係なく使用しています.これは設計者の責任です.
In JavaScript, Singletons serve as a shared resource namespace which isolate implementation code from the global namespace so as to provide a single point of access for functions.
javascriptでは、一例をグローバルの名前空間として利用し、そのオブジェクトにアクセスするポイントを提供する.使用シーン
In practice, the Singleton pattern is useful when exactly one object is needed to coordinate others across a system.
単一の例の比較は、オブジェクトと他のシステムとの相互作用に適しています.類比
一つのグループの組長に似ています.しばらくの間には組長が一人しかいません.組員の仕事、割り当てと調整と組員の仕事を指定するグループ長がいます.
例1:これは最も簡単な一例であり、key、valueの形式で属性と方法を記憶する.
var A = {
xx:3,
yy:4,
B:function(el){
},
C:function(el){
},
D:function(el){
},
E:function(el){
}
}
2:まず の を し、このインスタンスが するかどうかを し、 しない は し、 しない はそのまま します.var mySingleton = (function () {
// Instance
var instance;
function init() {
// Singleton
//
function privateMethod(){
console.log( "I am private" );
}
var privateVariable = "Im also private";
return {
//
publicMethod: function () {
console.log( "The public can see me!" );
},
publicProperty: "I am also public"
};
};
return {
// ,
getInstance: function () {
if ( !instance ) {
instance = init();
}
return instance;
}
};
})();
var singleA = mySingleton;
var singleB = mySingleton;
console.log( singleA === singleB ); // true
3:var SingletonTester = (function () {
// options: an object containing configuration options for the singleton
// e.g var options = { name: "test", pointX: 5};
function Singleton( options ) {
// set options to the options supplied
// or an empty object if none are provided
options = options || {};
// set some properties for our singleton
this.name = "SingletonTester";
this.pointX = options.pointX || 6;
this.pointY = options.pointY || ;
}
// our instance holder
var instance;
// an emulation of static variables and methods
var _static = {
name: "SingletonTester",
// Method for getting an instance. It returns
// a singleton instance of a singleton object
getInstance: function( options ) {
if( instance === undefined ) {
instance = new Singleton( options );
}
return instance;
}
};
return _static;
})();
var singletonTest = SingletonTester.getInstance({
pointX: 5
});
// Log the output of pointX just to verify it is correct
// Outputs: 5
console.log( singletonTest.pointX );
シングルモード
モードは モードとも われていますが、 くは モードとも われています.ソフトウェアの の で に ですが、 もよく われているデザインの つです.
はウィキペディアの モードについて します.
の モードを する 、 の を するクラスは つのインスタンスだけの を しなければならない. くの 、システム は つのグローバルオブジェクトを つだけで、システム の を するのに である. えば、システム のプロファイルにおいて、 データの のオブジェクトが して み まれたり、 されたりして、 のオブジェクトがデータを する がある も、この のオブジェクトを して データを して することで、 な における を にすることができる.
の のパターンの え は、クラスが1つのオブジェクトの ( に じ)を し、このインスタンスを る ( は、 にgetInstance を する)である.この を び すと、クラスが っている が でない は、その に ります.いいえの は、クラスのインスタンスを し、そのクラスが しているその にインスタンスを して します.このクラスのコンストラクタをプライベートな として し、 の がこのコンストラクタを してオブジェクトを することを し、このクラスの な だけでこのクラスの のインスタンスを る.
JSにとっては、 な によって、 の のモードを できるようになり、プライベートデータをクローズド でシミュレートすることができます. var single = (function(){ } var unique;
get Instance(){ } if( unique === undefined ){ } unique = new Costruct(); } return unique; }
Costruct(){ } //... のコンストラクタを するコード }
return { } get Instance : get Instance } )(); 、uniqueはオブジェクトの を します.get Instanceは の です.Contstructはインスタンスを するコンストラクターです.
の は、single.getInstance()によって され、 び しごとに の が られます.これは のモードによって される です.
しかし、JSにとって、 らかに の な はあまりにも で、 なるシーンで なる で モードを するのがJSの です.
1: も な の var シングルトン = { } atr : 1, method : function(){ return this.atr; } }
var t 1 = シングルトン ; var t 2 = シングルトン ; それは らかです.t 1==t 2です.
に で、しかも に われているのは、パッケージ がないということです.すべての が されています. を う がある には、 が があり、 が りなくなります.もちろん、thisに する にも の があります.
2:コンストラクタ
のJS とは し ていますが、このクラスのインスタンスが に しているかどうかの を の に れます. function Costruct(){ } // は だけです. if( Costruct.unique !== undefined ){ } return Costruct.unique } //その のコード this.name = 「NYF」 this.age=「24」 Costruct.unique = this; }
var t 1 = new コンストラック() ; var t 2 = new コンストラック() ; では、t 1==t 2もあります.
に です.ただ つの を して するだけです.でもこの は がないので、 が でCostructのunique を したら、 のモードも されます.
3:クローズド
フレキシブルブランドを っているJSにとっては、どんな でもn の えを つけることができます. で ってみます.ただ、 は にクローズドを ってシングルモデルを する をいくつか げます.つまり したシングルケースをキャッシュするだけです.
var single = (function(){ } var unique; Costruct(){ } //... のコンストラクタを するコード }
unique = new Const();
return unique; )(); var t 1=を します. single;var t 2=single;でいいです. の と ています.しかし、より な はもちろん、 ではありません.
single()を び して うことを むなら、 のreturnを
return function(){
return unique;
}
のようにnew で うこともできます.もちろんここでは、 にクローズドの をあげていますが、Costructでは、ケースがあるかどうかなどを してもいいです. な があります.それぞれの に わせて んでください.
め りをつける
としては、 モードは に モードの で であるが、 モードも よく われていて、 なモードである.
であるかどうかは、インスタンスオブジェクトのクラス(JSはクラスの がないが)だけが であるかどうかを えてください.
この は、データキャッシュを いて され、 が に されたかどうかを するための モードの な である.