JavaScriptシリーズ(34):設計モードのコマンドモード

3956 ワード

紹介する


コマンドモード(Command)の定義は、要求をオブジェクトにカプセル化し、異なる要求で顧客をパラメータ化することです.要求キューまたは要求ログを記録し、取り消し可能な操作を実行します.すなわち、モード変更は、関数の呼び出し、要求、および操作を単一のオブジェクトにカプセル化し、そのオブジェクトを一連の処理することを目的とする.さらに、コマンドオブジェクトと受信オブジェクトは、特定の関数を実装するオブジェクトを呼び出すことによってデカップリングすることができる.

本文


このモデルを車両購入プログラムで示し、まず車両購入の具体的な操作クラスを定義します.
$(function () {

var CarManager = {

//
requestInfo: function (model, id) {
return 'The information for ' + model +
' with ID ' + id + ' is foobar';
},

//
buyVehicle: function (model, id) {
return 'You have successfully purchased Item '
+ id + ', a ' + model;
},

// view
arrangeViewing: function (model, id) {
return 'You have successfully booked a viewing of '
+ model + ' ( ' + id + ' ) ';
}
};
})();

上記のコードを見て、関数を呼び出すことでmanagerのコマンドを簡単に実行しますが、場合によってはオブジェクト内部のメソッドを直接呼び出すつもりはありません.これにより、オブジェクトとオブジェクトの依存性が増加します.このCarManagerを拡張して、モデルとcar IDを含むCarManagerオブジェクトからの処理要求を受け入れることができます.コマンド・モードの定義に基づいて、次のような機能の呼び出しを実現します.
CarManager.execute({ commandType: "buyVehicle", operand1: 'Ford Escort', operand2: '453543' });

このようなニーズに応じて、CarManagerを実現することができます.Excuteメソッド:
CarManager.execute = function (command) {
return CarManager[command.request](command.model, command.carID);
};

改造後、呼び出しは簡単になり、以下の呼び出しが実現できます(もちろん、異常な詳細はさらに改善する必要があります):
CarManager.execute({ request: "arrangeViewing", model: 'Ferrari', carID: '145523' });
CarManager.execute({ request: "requestInfo", model: 'Ford Mondeo', carID: '543434' });
CarManager.execute({ request: "requestInfo", model: 'Ford Escort', carID: '543434' });
CarManager.execute({ request: "buyVehicle", model: 'Ford Escort', carID: '543434' });

まとめ


コマンドモードはコマンドキューを設計しやすく、必要に応じてコマンドをログに計上しやすく、リクエストを受け入れる側が呼び出す必要があるかどうかを決定することができ、リクエストの取り消しやリセットを実現することができ、新たに追加された特定のクラスは他のクラスに影響を与えないため、容易に実現できます.
しかし、敏捷な開発の原則は、コードに推測に基づく、実際には必要でない機能を追加しないでください.もし一つのシステムがコマンドモードを必要とするかどうかを知らないならば、一般的に急いでそれを実現しないでください.実際には、需要の時に再構築を通じてこのモードを実現するのは難しくありません.本当に取り消し、操作を回復するなどの機能が必要な時だけ、元のコードをコマンドモードに再構築してこそ意味があります.

同期と推奨


この文書はディレクトリインデックスに同期されました:JavaScriptシリーズを深く理解する
JavaScriptシリーズの文章を深く理解して、オリジナル、翻訳、転載などの各タイプの文章を含んで、もしあなたに役に立つならば、おじさんに書く動力を推薦して支持してください.