ホームページ >ウェブフロントエンド >jsチュートリアル >シングルトンかオブザーバブルか?選択を誤ると昇進を失う可能性があります!
設計パターンは、適切に構造化された保守が容易なソフトウェアを作成するための基礎です。その中で、Singleton と Observable は、グローバルな状態制御とシステムの異なる部分間の通信を必要とするシナリオでよく使用されます。この記事では、これら 2 つの標準がどのように機能するか、いつ使用するか、その違いについて説明し、実装方法の実践的な例を示します。
シングルトン パターン は、クラスにインスタンスが 1 つだけあることを保証し、そのインスタンスへのグローバル アクセス ポイントを提供する作成設計パターンです。このパターンは、グローバル設定、データベース接続、ログ管理など、アプリケーション全体で単一のオブジェクトが必要な場合に便利です。
シングルトンの主な特徴は、クラス インスタンスを単一のオブジェクトに制限し、すべてのインスタンス リクエストが同じオブジェクトを返すようにすることです。これを実現するために、パターンでは通常、初めてリクエストされたときにのみインスタンスを作成する静的メソッドを使用し、システム全体でオブジェクトの一意の作成と使用を保証します。
以下の図のシーケンスは、シングルトン インスタンスがどのように作成およびアクセスされ、一意であることが保証されるかを示しています。
シングルトン シーケンス図は、クライアントとシングルトン クラス間の対話フローを示しています。このプロセスは、クライアントが静的な getInstance() メソッドを呼び出してシングルトン インスタンスを取得することから始まります。インスタンスがまだ作成されていない場合、Singleton は新しいインスタンスを作成して返します。クライアントが getInstance() メソッドを再度呼び出すと、同じインスタンスが返され、プログラムの実行全体で Singleton オブジェクトのインスタンスが 1 つだけ存在することが保証されます。
class Singleton { private static instance: Singleton; private constructor() { } // Método para acessar a instância única public static getInstance(): Singleton { if (!Singleton.instance) { Singleton.instance = new Singleton(); } return Singleton.instance; } public showMessage(): string { return "Esta é a única instância!"; } } // Uso do Singleton const instance1 = Singleton.getInstance(); console.log(instance1.showMessage()); // "Esta é a única instância!" const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
Observable Pattern は、オブジェクト間の 1 対多の依存関係を定義する動作設計パターンです。言い換えれば、オブジェクト (「サブジェクト」) の状態が変化すると、そのオブジェクトに依存するすべてのオブジェクト (「オブザーバー」) に自動的に通知されます。このパターンは、グラフィカル インターフェイスや監視システムなど、イベントや状態の変更を異なるコンポーネント間で伝達する必要があるシステムで広く使用されています。
Observable パターンを使用すると、オブジェクトはオブジェクトの状態の変化を「観察」し、それらの変化に反応できます。このパターンは 3 つの主要コンポーネントに基づいています:
Observable シーケンス図は、パターンが複数のオブザーバーでどのように機能するかを示しています。状態変化が発生すると、サブジェクト (または監視対象オブジェクト) は登録されているすべてのオブザーバーに通知します。各オブザーバーは通知に反応し、受信した情報に基づいて必要なアクションを実行します。通知プロセスは伝播され、すべてのオブザーバーが同時に更新され、サブジェクトの状態との同期が維持されます。このパターンは、オブジェクトの状態の変化について通知する必要があるシステムのコンポーネントまたは部分が複数ある場合に役立ちます。
class Singleton { private static instance: Singleton; private constructor() { } // Método para acessar a instância única public static getInstance(): Singleton { if (!Singleton.instance) { Singleton.instance = new Singleton(); } return Singleton.instance; } public showMessage(): string { return "Esta é a única instância!"; } } // Uso do Singleton const instance1 = Singleton.getInstance(); console.log(instance1.showMessage()); // "Esta é a única instância!" const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
どちらのパターンも制御された方法でオブジェクトを管理するのに役立ちますが、目的と動作は大きく異なります。
Característica | Singleton | Observable |
---|---|---|
Objetivo | Garantir que uma classe tenha apenas uma instância. | Notificar múltiplos objetos sobre mudanças de estado. |
Instância | Apenas uma instância é criada e compartilhada. | Vários objetos podem ser observadores de um único sujeito. |
Uso principal | Gerenciamento de recursos exclusivos. | Notificação de eventos e mudanças de estado. |
Exemplo de uso | Gerenciamento de logs ou configuração global. | Atualização de interfaces gráficas ou propagação de eventos. |
目的
シングルトン パターンと オブザーバブル
パターンは、ソフトウェア開発のいくつかの状況において基本です。以上がシングルトンかオブザーバブルか?選択を誤ると昇進を失う可能性があります!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。