js オブザーバーモードの紹介と使用

js オブザーバーモードの紹介と使用

このケースを通じて、オブザーバー パターン内のさまざまなオブジェクトと機能を区別できるようになります。次にコーディング

4. コーディング

1. フロントデスクの女性(通知者)

/*
 * desc: 通知クラス* 1. オブザーバーを保存* 2. オブザーバーを追加* 3. オブザーバーを削除* 4. オブザーバーに通知*/
クラス Dep {
    コンストラクタ() {
        //ストレージオブザーバー this.subs = []
    }

    /**
     * オブザーバーを追加 * @param {オブザーバーオブジェクト} sub 
     */
    サブルーチンを追加します(サブルーチン) {
        // すべてのオブザーバーに更新メソッドがあることを確認する if (sub && sub.update) {
            this.subs.push(サブ)
        }
    }

    /**
     * オブザーバーを削除 * @param {削除するオブザーバーオブジェクト} sub 
     */
    サブルーチンを削除します
        this.subs.forEach((item, index) => {
            if (sub.id === item.id) {
                this.subs.splice(インデックス、1)
                戻る;
            }
        })
    }

    /**
     * オブザーバーに通知し、すべてのオブザーバー内で更新メソッドを呼び出し、自身の状態を変更します * */
    通知() {
        this.subs.forEach(sub => {
            サブ.更新()
        })
    }
}

2. プログラマクラス(オブザーバークラス)

/**
 * オブザーバーオブジェクト */
クラスウォッチャー{
    コンストラクタ(名前) {
        this.name = 名前
    }

    //オブザーバーオブジェクトには、作業ステータスを変更するための独自の更新メソッドがあります。update() {
        console.log(`${this.name} は通知を受信し、作業ステータスを変更しました。`)
    }
}
/**
 * オブザーバーオブジェクト */
クラスウォッチャー{
    コンストラクタ(名前) {
        this.name = 名前
    }

    //オブザーバーオブジェクトには、作業ステータスを変更するための独自の更新メソッドがあります。update() {
        console.log(`${this.name} は通知を受信し、作業ステータスを変更しました。`)
    }
}

3. 上司が会社に戻り、フロントデスクの女性がプログラマーに通知するのをシミュレートします。

 <script src="./js/Dep.js"></script>
 <script src="./js/Watcher.js"></script>
 <スクリプト>
        // 同僚の張三 const tongshi1 = new watcher("張三")

        // 同僚 Li Si const tongshi2 = new watcher("Li Si")

        // フロントデスクの女性は、どの同僚に通知する必要があるかを把握し、通知する必要がある同僚を収集する必要があります。const xiaojiejie = new Dep();
        xiaojiejie.addSubs(tongshi1)
        xiaojiejie.addSubs(tongshi2)

        //ボスが戻ってくるのを待っています...
        // 待って、待って...
        // 待って、待って...
        // 待って、待って...
        // 待って、待って...
        // ボスが戻ってきた // ボスが戻ってくると、フロントデスクの女性は自分の通知メソッドを呼び出して、プログラマーに自分のステータスを変更するように通知しますxiaojiejie.notify()
    </スクリプト>

Java デザインパターンにおけるオブザーバーパターンの導入と使用背景に関するこの記事はこれで終わりです。より関連性の高いオブザーバーパターンのコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。皆様の今後の 123WORDPRESS.COM へのご支援をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript でオブザーバー パターンを実装する方法
  • js オブザーバー モード 弾丸 スクリーン ケース
  • JavaScript デザイン パターン: オブザーバー モードとパブリッシュ サブスクライブ モードの詳細な説明
  • JavaScript デザイン パターン - オブザーバー パターンの原則と使用例
  • ネイティブ js で実装されたオブザーバー モードとサブスクライバー モードの簡単な例
  • JavaScript オブザーバー パターンの原則と使用例
  • Javascriptでオブザーバーモードを実装する方法を教えます

定義

オブザーバー パターンは 1 対多の依存関係を定義し、複数のオブザーバー オブジェクトが同時にサブジェクト オブジェクト (通知オブジェクト) を監視できるようにします。サブジェクト オブジェクトは、監視対象オブジェクトの変更を監視すると、すべてのオブザーバー オブジェクトに通知して、各オブザーバー オブジェクトが自身を更新できるようにします。

ここではいくつかの役割が関与しており、それぞれに次のような機能があります。

  1. オブザーバーオブジェクト: 自身を更新できる
  2. 対象オブジェクト: オブザーバーの追加、削除、通知が可能
  3. オブザーバー: 対象オブジェクトによって監視されます。監視対象オブジェクトが変更されると、対象オブジェクトはオブザーバーにステータスの更新を通知します。

2. 使用シナリオ

1つのオブジェクトを変更すると、同時に他のオブジェクトも変更する必要があり、変更する必要があるオブジェクトの数を知る必要がない場合

3. 例を挙げる

概念の説明がわかりにくくて理解しにくい場合は、日常生活からの例を挙げて説明してください。

シナリオ 1:

オフィスビル内のパソコンの前。プログラマーの一団は、上司が出張中であることを利用し、コンピューターで NBA の試合を観戦しながら、時折興奮して叫んでいた。ちょうどそのとき、出張から帰ってきた上司が偶然彼らと遭遇し、気まずい状況になってしまいました。

解決:

会社でサボっていたところ、上司に見つかってしまうのを避けるために、数人がフロントの女性に賄賂を贈る計画を立てました。上司が再び会社に来た時、その女性はすぐにプログラマーたちに知らせ、仕事に戻るように頼みました。

シナリオ2:

オフィスビル内のパソコンの前。プログラマーの一団は、上司が出張中であることを利用し、コンピューターで NBA の試合を観戦しながら、時折興奮して叫んでいた。この時、上司が出張から帰ってきました。フロントの女性はボスが戻ってくるのを見て、すぐに試合を観戦していた男たちに知らせました。この時、若者たちはすぐに仕事モードに切り替わりました。

シナリオ 2 では、オブザーバー パターンを使用します。上司が戻ってきたら、プログラマーはパドリング ステータスを変更する必要があり、フロント デスクの女性がそれを通知する責任があります。

役割関数
プログラマーオブザーバーステータスを変更できます
フロントの女性件名(通知者)通知が必要なプログラマ(オブザーバー)を収集、削除、保存し、プログラマに通知を送信します。
ボスオブザーバーフロントデスクの女性に観察された

<<:  MySQL 挿入時間の 8 時間の違いの問題の解決方法

>>:  CentOS8でyumソースを変更した後にウェアハウスキャッシュの同期に失敗する問題の詳細な説明

推薦する

docker での psql データベースのバックアップとリカバリの詳細な説明

1. DockerでのPostgresデータベースのバックアップ注文: docker exec it...

Linux ソフトウェアのインストール場所を確認する簡単な方法

1. ソフトウェアのインストールパスを確認します。 Linuxソフトウェアをインストールできる場所は...

MySQL 中断された接続警告ログの分析

序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...

JavaScript のプライベート クラス フィールドと TypeScript のプライベート修飾子の詳細な説明

目次JavaScript のプライベート クラス フィールドとプライバシーの必要性JavaScrip...

JavaScript配列の一般的なメソッドの概要

目次1. はじめに2. フィルター() 3. マップ() 4. ソート() 5. 減らす() 6. ...

フロントエンド プロジェクトのデフォルトのスクロール バー スタイルを変更する (概要)

スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...

Bootstrap 3.0 学習ノート グリッドシステムの原則

前の 2 つの記事の簡単な紹介を通じて、Bootstrap についての基礎的な理解が得られました。 ...

MySQL 入門 - SQL 実行プロセス

目次1. プロセス2. コアアーキテクチャ2.1 サーバー層の基本コンポーネントの紹介3. ステート...

vue2 vue3 での Echarts の詳細な使用方法

目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...

JavaScript で実装された 7 つのソート アルゴリズムの概要 (推奨!)

目次序文バブルソート基本アルゴリズム2 番目の書き方は、基本的なアルゴリズムに基づいて改良されていま...

jQuery における Ajax の関連知識ポイントのまとめ

序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...

一般的なDocker Composeコマンドの詳細な説明

1. Docker Compose の使用方法は docker コマンドの使用方法と非常に似ています...

Vue プロジェクトで mock を使用する方法をご存知ですか?

目次最初のステップ: 2 番目のステップは、request.js で関連する構成を行うことです。re...

MySQL 5.7.17 winx64 のインストールと設定方法のグラフィックチュートリアル

Windows インストール mysql-5.7.17-winx64.zip メソッド レコード &...