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 百万レベルのデータページングクエリ最適化ソリューション

推薦する

Webpack での publicPath の使用法の詳細な説明

目次出力出力パス出力.publicPath webpack-dev-server の publicP...

CSSはcalc()を使用して現在の表示画面の高さを取得します

まず、CSS3 の相対的な長さの単位を見てみましょう (詳細なチュートリアルを参照してください)。相...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

JavaScript オブジェクトを作成する 3 つの方法

目次1. オブジェクトリテラル2. newキーワードはオブジェクトを作成する3. Object.cr...

HTMLデータ送信投稿_PowerNode Java Academy

HTTP/1.1 プロトコルで指定されている HTTP リクエスト メソッドには、OPTIONS、...

Nginx の書き換え正規マッチング書き換え方法の例

Nginx の書き換え機能は、リダイレクトと同様に、URL アドレスを一時的または永続的に新しい場所...

Apache の一般的な仮想ホスト設定方法の分析

1. Apacheサーバーのインストールと設定yum インストール httpd -y systemc...

Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル

1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...

JavaScript で二分探索木を実装する

JavaScriptでの検索二分木実装は参考までに。具体的な内容は以下のとおりです。バイナリ検索木 ...

Win10 への MySQL 5.7 のインストール MSI 版のチュートリアル(画像とテキスト付き)

主にインストール後に my.ini ファイルを確認するために、msi 形式でインストールしました。フ...

SQL インジェクションの詳細

1. SQL インジェクションとは何ですか? SQL インジェクションは、入力パラメータに SQL ...

dockerコンテナにvimをインストールするソリューション

目次物語の始まりvimをインストールし、hadoop-hive.envを編集します。不注意で回避しま...

HTML で自動ページジャンプを実現する 5 つの方法

前回の記事では、HTML ページが 3 秒後に自動的にジャンプする一般的な 3 つの方法を紹介しまし...

Windows10でmysql8.0.17を置き換える詳細なチュートリアル

この記事では、Windows10でmysql8.0.17を置き換える具体的な手順を参考までに紹介しま...

自動ロック画面機能を実現するjs

1. 使用シナリオこのような要件があるため、システムが開発されました。ユーザーがデスクトップを離れ...