平成 17 年 12 月 02 日 近畿大学理工学部情報学科 電子商取引研究室 上田 翔太 Java デザインパターン : Command パターンについて 1 Command パターンの概要 Command パターンはリクエストを受け取ってアクショ ンを実行するタイプのプログラムでよく使われる。利点は 以下の通りである。 Invoker、Client、Receiver は上記を遵守する内容ならば 形式は問わない。つまり、Java のクラスだけで適用する のでは無く、それ以外で用いられるということだ。 3 Command パターンの適用例 3.1 1. 将来追加されるであろうリクエストに対応しやすく なる。 2. アクションを実行する際にスレッドを用いてバッググ 四則演算アプリ まず最初に簡単な Command パターンを適用した四則 演算アプリを例を以下に示していくことにする。 3.2 UML 3.3 内容 ラウンドで処理を実装しやすい。 3. 実行内容の履歴を保持し、再実行が容易に可能である。 4. 実行履歴を保持しているため、アンドゥ処理 (取消処 理) を実装しやすい。 まず最初に簡単な Command パターンを適用した四則演 算アプリを例を以下に示していくことにする。 2 Command パターンの UML CalcCommand クラスは今回のパターンの Command オブジェクトにあたり、CalcCommand を実装している *CommandImpl クラスが ConcreteCommand オブジェ クトにあたいする。execute メソッドの引数は各自任意で 指定し、計算結果を System.out.println 等でコンソール上 へ印字する。 Calculator クラスは*CommandImpl クラスのインスタ ンスを生成し、java.util.Map へ格納する。今回 Map の キーは String 型で、要素は CalcCommand 型とする。 getCalculator メソッドは引数として計算したい演算子を • Command : 全ての ConcreteCommand に共通する 代入し、その演算子に対応する CalcCommand クラスを インターフェイスを提供するオブジェクト。execute Map.get メソッドを用いて抽出する。 メソッドを定義している。 CalcMain クラスは動作確認クラスとし、Calculator イン • ConcreteCommand : Command インターフェイス スタンスを生成し getCalculator メソッドを実行して計 を実装するクラス。各リクエストに対応する個々の処 算したい CalcCommand インスタンスを取得する。その 理を実装したオブジェクト。 後、そのインスタンスの exeute メソッドを実行して計算 • Invoker : execute メソッドを呼び出すオブジェクト。 させる。 • Client : ConcreteCommand のインスタンスを必要 3.4 に応じて生成するオブジェクト。 • Reciver : ConcreteCommand の execute メソッドを 実行する際、その処理の対象となるオブジェクト。 プログラ厶 以下の URL にサンプルプログラムを配置している。 http://ecl.info.kindai.ac.jp/ ueda/archives/CalcCmdPattern.zip
© Copyright 2024 Paperzz