シングルケースはプログラミングにおける非常に基本的なもので、この記事では主に ES6 を使用してシングルトン パターンを実装する方法とそのアプリケーションについて詳しく紹介します。皆さんのお役に立てれば幸いです。
前書き
従来の開発エンジニアにとって、シングルトンとは、クラスにインスタンスが 1 つだけ存在することを保証するものであり、インスタンスが存在する場合は、そのインスタンスが直接返されます。存在しない場合は、作成されて返されます。これは、クラスのインスタンス オブジェクトが 1 つだけであることを確認します。 JavaScript では、シングルトンは名前空間プロバイダーとして機能し、グローバル名前空間からオブジェクトへの一意のアクセス ポイントを提供します。
シングルトン パターンの定義は、クラスにインスタンスが 1 つだけあることを保証し、それにアクセスするためのグローバル アクセス ポイントを提供することです。
シングルトンパターンは、適切なタイミングでオブジェクトを作成し、唯一のものを作成できます。
コードは現実に近く、非常に興味深いです。たとえば、Web サイトにログインする場合、「ログイン」をクリックした後にログインのポップアップ ボックスが表示されますが、再度クリックしても同じポップアップ ボックスは表示されません。または、音楽プレーヤー プログラムでは、ユーザーが音楽を開いて別の音楽を開こうとすると、前の再生インターフェイスが自動的に閉じて、現在の再生インターフェイスに切り替わります。これらはすべてシングルトン パターンのアプリケーション シナリオです。
シングルトン パターンを実装するには、クラスを作成するのが一般的な方法です。クラスには、そのクラスのインスタンス オブジェクトを作成できるメソッドと、インスタンス オブジェクトが作成されたかどうかを記録するマークがあります。オブジェクトがすでに存在する場合は、最初にインスタンス化されたオブジェクトへの参照が返されます。
シングルトンパターンの実装
es5の実装方法
var Singleton = function(name) { this.name = name; //一个标记,用来判断是否已将创建了该类的实例 this.instance = null; } // 提供了一个静态方法,用户可以直接在类上调用 Singleton.getInstance = function(name) { // 没有实例化的时候创建一个该类的实例 if(!this.instance) { this.instance = new Singleton(name); } // 已经实例化了,返回第一次实例化对象的引用 return this.instance; }
ユーザーはよく知られたインターフェイスを通じてインスタンスにアクセスできます。
オブジェクトを 2 回インスタンス化して、2 つのインスタンス化の結果が同じオブジェクトを指しているかどうかを観察します。
var a = Singleton.getInstance('sven1'); var b = Singleton.getInstance('sven2'); // 指向的是唯一实例化的对象 console.log(a === b);
戻り結果は次のとおりです: true。 a と b の間には参照関係があることを説明します。
es6実装
Singletonクラスを作成します。 class キーワードと静的関数は両方とも es6 の新しい機能です。
class Singleton { constructor(name) { this.name = name; this.instance = null; } // 构造一个广为人知的接口,供用户对该类进行实例化 static getInstance(name) { if(!this.instance) { this.instance = new Singleton(name); } return this.instance; } }
シングルトン パターンの適用例
人生における一般的なシナリオを使用して、シングルトン パターンの適用を説明します。
どの Web サイトでもログイン ボタンをクリックすると、ログイン ボックスは 1 つだけ表示されます。後で再度ログイン ボタンをクリックしても、それ以上のポップアップ ボックスは表示されません。これは、シングルトン パターンの典型的な適用例です。次にそれを実装していきます。シングルトン モードの表示に焦点を当てるために、ログイン ボックスを簡略化してみましょう。
以上がES6 を使用してシングルトン パターンを実装する方法とそのアプリケーションの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。