ホームページ > ウェブフロントエンド > jsチュートリアル > シングルトンかオブザーバブルか?選択を誤ると昇進を失う可能性があります!

シングルトンかオブザーバブルか?選択を誤ると昇進を失う可能性があります!

DDD
リリース: 2025-01-11 06:10:43
オリジナル
756 人が閲覧しました

設計パターンは、適切に構造化された保守が容易なソフトウェアを作成するための基礎です。その中で、SingletonObservable は、グローバルな状態制御とシステムの異なる部分間の通信を必要とするシナリオでよく使用されます。この記事では、これら 2 つの標準がどのように機能するか、いつ使用するか、その違いについて説明し、実装方法の実践的な例を示します。

シングルトンとは何ですか?

シングルトン パターン は、クラスにインスタンスが 1 つだけあることを保証し、そのインスタンスへのグローバル アクセス ポイントを提供する作成設計パターンです。このパターンは、グローバル設定、データベース接続、ログ管理など、アプリケーション全体で単一のオブジェクトが必要な場合に便利です。

シングルトンはどのように機能しますか?

シングルトンの主な特徴は、クラス インスタンスを単一のオブジェクトに制限し、すべてのインスタンス リクエストが同じオブジェクトを返すようにすることです。これを実現するために、パターンでは通常、初めてリクエストされたときにのみインスタンスを作成する静的メソッドを使用し、システム全体でオブジェクトの一意の作成と使用を保証します。

以下の図のシーケンスは、シングルトン インスタンスがどのように作成およびアクセスされ、一意であることが保証されるかを示しています。

Singleton ou Observable? A Escolha Errada Pode Custar Sua Promoção!

シングルトン シーケンス図は、クライアントとシングルトン クラス間の対話フローを示しています。このプロセスは、クライアントが静的な getInstance() メソッドを呼び出してシングルトン インスタンスを取得することから始まります。インスタンスがまだ作成されていない場合、Singleton は新しいインスタンスを作成して返します。クライアントが getInstance() メソッドを再度呼び出すと、同じインスタンスが返され、プログラムの実行全体で Singleton オブジェクトのインスタンスが 1 つだけ存在することが保証されます。

使用例 - TypeScript のシングルトン

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
ログイン後にコピー
ログイン後にコピー

シングルトンをいつ使用するか?

  • グローバル設定: 環境変数などのシステム設定を保存するために単一のインスタンスが必要な場合。
  • 接続管理: たとえば、データベースまたは API サーバーへの接続を管理します。
  • リソース管理: ロガーやキャッシュなどの固有のリソースへのアクセスを制御する必要がある場合。

観測可能とは何ですか?

Observable Pattern は、オブジェクト間の 1 対多の依存関係を定義する動作設計パターンです。言い換えれば、オブジェクト (「サブジェクト」) の状態が変化すると、そのオブジェクトに依存するすべてのオブジェクト (「オブザーバー」) に自動的に通知されます。このパターンは、グラフィカル インターフェイスや監視システムなど、イベントや状態の変更を異なるコンポーネント間で伝達する必要があるシステムで広く使用されています。

Observable はどのように機能しますか?

Observable パターンを使用すると、オブジェクトはオブジェクトの状態の変化を「観察」し、それらの変化に反応できます。このパターンは 3 つの主要コンポーネントに基づいています:

  1. サブジェクト: 状態を維持し、オブザーバーに通知を送信するオブジェクト。
  2. オブザーバー: サブジェクトの状態変化に関心のあるオブジェクト。
  3. サブスクリプション: オブザーバーがサブジェクト通知をサブスクライブまたはサブスクライブ解除できるメカニズム。

Singleton ou Observable? A Escolha Errada Pode Custar Sua Promoção!

Observable シーケンス図は、パターンが複数のオブザーバーでどのように機能するかを示しています。状態変化が発生すると、サブジェクト (または監視対象オブジェクト) は登録されているすべてのオブザーバーに通知します。各オブザーバーは通知に反応し、受信した情報に基づいて必要なアクションを実行します。通知プロセスは伝播され、すべてのオブザーバーが同時に更新され、サブジェクトの状態との同期が維持されます。このパターンは、オブジェクトの状態の変化について通知する必要があるシステムのコンポーネントまたは部分が複数ある場合に役立ちます。

使用例 - TypeScript で観察可能

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 をいつ使用するか?

  • グラフィカル インターフェイスのイベント: ボタンのクリック、フィールドの変更、または画面の更新に反応します。
  • 状態変更の通知: オブジェクトへの変更について複数のコンポーネントに通知する必要がある場合。
  • リアクティブ データ フロー モデリング: イベントベースのアプリケーションなど、複数のシステム間でデータまたはイベントの伝播があるシステム。

シングルトンとオブザーバブルの違い

どちらのパターンも制御された方法でオブジェクトを管理するのに役立ちますが、目的と動作は大きく異なります。

機能
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.
シングルトン

観測可能

目的

クラスにはインスタンスが 1 つだけあることを確認してください。 状態の変化について複数のオブジェクトに通知します。 インスタンス 作成および共有されるインスタンスは 1 つだけです。 複数のオブジェクトが 1 つの対象の観察者になることができます。 主な用途 排他的なリソース管理。 イベントと状態変化の通知。 使用例 ログ管理またはグローバル構成。 グラフィカル インターフェイスの更新またはイベントの伝播。 結論

シングルトン パターンと オブザーバブル

パターンは、ソフトウェア開発のいくつかの状況において基本です。
Singleton は、アプリケーション全体でクラスの単一インスタンスを保証する必要がある場合に最適ですが、Observable は、状態の変化に基づいて複数のオブジェクト間の相互作用を通知および管理する場合に役立ちます。 これらのパターンから選択する場合は、プロジェクトのニーズを考慮してください。インスタンスの一意性がアプリケーションにとって重要な場合は Singleton を使用し、システムが状態やイベントの変化に反応する必要がある場合は Observable を使用します。

以上がシングルトンかオブザーバブルか?選択を誤ると昇進を失う可能性があります!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート