JavaScript デザインパターン コマンドパターン

JavaScript デザインパターン コマンドパターン

コマンド パターンは、JavaScript デザイン パターンにおける動作デザイン パターンです。

定義: あるオブジェクトにリクエストを送信しますが、具体的な操作がわからないため、リクエストの送信者と受信者が互いの結合関係を排除できるように、プログラムを疎結合方式で設計します。疎結合方式はコマンド パターンです。

わかりやすい言葉で説明すると、あなたが会社の研究開発部門のチームリーダーで、リーダーからタスクを割り当てられ、ざっと見てみると、非常に単純な要件は比較的簡単に実装できることがわかります。また、チームリーダーとして、毎日やるべきことがたくさんあるため、要件をチームメンバーに直接渡して開発と実装を依頼する準備ができています。リーダーは、あなたがそれを実行するか、誰に実行を依頼するかは気にしません。リーダーが求めているのは最終結果だけです。ここで、リーダーは命令の発行者であり、あなたは命令の受信者です。

コード実装:

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <meta http-equiv="X-UA-compatible" content="ie=edge">
    <title>ドキュメント</title>
</head>
<本文>
        <button id="button1">コマンドをフロントエンドに公開</button>
        <button id="button2">バックエンドにコマンドを公開する</button>
</本文>
<スクリプト>

    var button1 = document.getElementById("button1");
    var button2 = document.getElementById("button2");
    //コマンドを定義する var command = function(Executor,func){
        Executor.onclick = func;
    }
    // リーダーを定義します var Leader = {};
    
    リーダー.チームリーダー = {
        ウェブ:関数(){
            console.log("フロントエンドはまもなく完成します");
        },
        java:関数(){    
            console.log("バックグラウンドはまもなく完了します")
        }
    }

    コマンド(button1、Leader.teamleader.web);
    コマンド(button2、Leader.teamleader.java);
</スクリプト>
</html>

実行結果:

ここで、コマンド オブジェクトは、パラメーターに応じてさまざまなタスクを実行するメソッドとして定義されます。異なるボタンをクリックすると、異なるコマンドが実行されます。

マクロ:

マクロコマンドはコマンドの集合です。マクロコマンドを実行することで、一度に複数のコマンドを実行することができます。

コンピュータのスタートアップ項目: 現在、多くのソフトウェアには、コンピュータのスタートアップにデフォルトのスタートアップ項目が追加されています。つまり、コンピュータの電源をオンにすると、特定のソフトウェアがデフォルトで起動されます。これは、マクロ コマンドのシナリオです。

var QQコマンド = {
    実行:関数(){
        console.log("QQ が正常に自動起動しました");
    }
}

var weChatコマンド = {
    実行:関数(){
        console.log("WeChat が正常に起動しました");
    }
}

var マクロコマンド = 関数(){
    戻る {
        リスト:[]、
        追加:関数(コマンド){
            this.list.push(コマンド);
        },
        実行:関数(){
            for(var i = 0,command;command = this.list[i++];){
                コマンドを実行します。
            }
        }
    }
}

var マクロコマンド = マクロコマンド();
マクロコマンドを追加します(QQコマンド)。
マクロコマンドを追加します。(weChatコマンド)
マクロコマンドを実行します。

上記のコードでは、マクロ コマンド オブジェクトにリスト配列を定義し、add メソッドを使用してそれを実行キューに追加します。いわゆる実行キューはリスト配列です。次に、ループを介してコマンドを順番に実行します。これにより、マクロ コマンドが生成され、1 つのコマンドで複数のタスクが開始されます。

コマンド モードは、実際にはコマンド オブジェクトを定義します。リクエスト パブリッシャーは、パラメーター化された形式でパラメーターを渡して特定の操作を実行し、それによってリクエスト パブリッシャーとレシーバーを切り離します。

最後に:

この連載記事では、よく使われる 10 個の JavaScript デザイン パターンを取り上げます。多くの情報を参考にし、自分の理解と組み合わせて、最もわかりやすい方法で説明しました。私のレベルとエネルギーが限られているため、誤解がある場合は、適時に指摘してください。デザイン パターンの連載記事は当面保留し、後で補足します。来月から、ES6 を体系的に学習し、ES6 連載記事を完成させる準備を始めます。

上記は、JavaScript デザインパターンのコマンドパターンの詳細です。JavaScript デザインパターンの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JavaScript デザインパターン - コマンドパターンの原則と使用例の分析
  • JavaScript デザインパターン コマンドパターン例分析
  • JS デザイン パターンにおけるコマンド モードの概念と使用法の分析
  • JavaScript デザインパターン クラシックコマンドパターン
  • JavaScript徹底理解シリーズ(34):デザインパターンのコマンドモードを詳しく解説
  • JavaScript デザインパターン コマンド モード

<<:  vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

>>:  MySQL 百万レベルのデータページングクエリ最適化ソリューション

推薦する

DIV 背景半透明テキスト非半透明スタイル

DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...

Linux で圧縮ファイルの内容を表示する 10 の方法 (要約)

一般的に、アーカイブされたファイルや圧縮されたファイルの内容を表示するには、まず解凍してから表示する...

この記事は、JQueryの基本的な操作を理解し、始めるのに役立ちます。

目次1. Jquery を使用する手順: (1)jsライブラリをインポートする(2)ページ読み込みイ...

Javascript の基礎: 演算子とフロー制御の詳細な説明

目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...

Vueモバイル端末に最適な適応ソリューションについての簡単な説明

序文: 最近の医療モバイル プロジェクトに基づいて、Vue はさまざまな画面のさまざまな画面サイズに...

ドラッグ効果を実現するための純粋なCSSコード

目次1. ドラッグ効果の例2. CSS実装の原則3. CSS実装の詳細4. CSSレイアウト1. 固...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...

Linux システムのユーザー管理コマンドの概要

ユーザーとグループの管理1. ユーザーとグループの基本概念ユーザーとグループ:システム上のすべてのプ...

JavaScript のクロージャの問題の詳細な説明

クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...

左右の幅を固定し、中央の幅を適応させたHTMLレイアウトのソリューションの詳細な説明

この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明

ビュービューとは何ですか?ビューの役割は何ですか?ビューは仮想テーブルであり、データ自体を含まない論...

Gokudōゲームにおけるフロントエンド知識のまとめ

背景日本語を学び始めた当初は、日本語の50音を覚えるのは簡単ではなく、特にカタカナを覚えるのは困難で...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...