正しい議論:
コマンドモードは、オブジェクトへの要求または操作をカプセル化します。コマンドモードランタイムシステムは、さまざまなリクエストを使用してクライアントのパラメーター化、キューリクエスト、またはリクエストログを記録し、コマンドの取り消しおよび回復関数を提供できます。
人気のある:
実際、理解しやすいです。コマンドモード、あなたが気にするのはコマンド(または操作)です。例を挙げましょう。会社では、操作全体がシステムのようなものです。ボスが注文を発行し、中間レベルのリーダーが注文を受け取り、担当の特定の従業員に割り当てました。プロセス全体が明確です。このプロセスを修正し、システムを形成する方法、要件があります。キーポイントを把握する必要があります:注文。それを抽出すると、他のすべてが解決されます。コマンドを抽出し、それらを独立したオブジェクトにカプセル化して、デカップリングを実現します。他の人については、このコマンドがCEO、人事部、またはお父さんによって提案されたかどうかにかかわらず、簡単に拡張できます。この注文の執行者がZhang SanまたはTurtleであるかどうかに関係なく。このモデルの出現は、実際には哲学的な「主な矛盾を把握する」ことです。他の作家のようなその他の例は、「道端に行ってバーベキューレストランに行くためにバーベキューを食べることの違いは何ですか」または「猿の王は天国の宮殿のヤド・皇帝について、猿をタイバイ・ヴィーナスで捕らえることを大騒ぎします」と挙げました。
Javaコマンドモードは、基本的にコマンドのカプセル化であり、コマンドを発行する責任を分離し、それらを異なるオブジェクトに委任します。素人の用語では、私はボスなので、注文を送るだけです。誰にこの注文を送信するか、誰がそれを実行するかについては、それは私次第です。私は自分自身のためにトラブルを引き起こすために誰かを雇うためにお金を送りません。あなたは物事を担当する従業員であり、あなたの義務はあなたの上司によって割り当てられたタスクを行うことです。現実的になり、あまり知らないで、ゴシップをしないで、あまり尋ねないでください。
成し遂げる:
最初にクラス図を見てみましょう:
これに基づいて、サンプルコードを見てください。
パブリックインターフェイスicommand {void execute(); }パブリッククラスConcreTeCommand ICommand {private Receiver Receiver; Public ConcreTeCommand(受信機){this.receiver = receiver; } @Override public void execute(){this.receiver.action(); }} public class Receiver {public void Action(){system.out.println( "受信者が何かをする"); }} public class Invoker {private icommandコマンド; public Invoker(icommand command){this.command = command; } public void invoke(){this.command.execute(); }} public class test {public static void main(string [] args){receiver receiver = new Receiver(); // Real Executor icommand command = new ConcreTeCommand(receiver); //分離invoker Invoker(command); // Caller Invoker.invoke(); }}
アドバンテージ:
欠点:
特定のコマンドクラスが多すぎる場合があります。