Command パターンAdvertisement命令をキューに格納して順番に実行する。
命令をクラス化する。クラス化した命令はキューに順次格納され、実行される。
サンプルコード
Main
public class Main{
public static void main(String[] args){
CommandList list = new CommandList();
//コマンドをリストに追加
list.addCommand(new TitleCommand("Java 入門"));
list.addCommand(new TextCommand("Java の基礎を解説"));
list.addCommand(new PriceCommand("2000"));
list.addCommand(new TitleCommand("Java 応用"));
list.addCommand(new TextCommand("基礎の次のステップ"));
list.addCommand(new PriceCommand("2500"));
//リスト内のコマンドを順番に実行
list.doCommand();
}
}
CommandList(キューイング&実行)
import java.util.ArrayList;
import java.util.Iterator;
class CommandList {
private ArrayList commandList = new ArrayList();
//コマンドをリストに追加
public void addCommand(Command cmd){
commandList.add(cmd);
}
//リスト内のコマンドを順番に実行
public void doCommand(){
Iterator iterator = commandList.iterator();
while(iterator.hasNext()){
Command cmd = (Command)iterator.next();
cmd.output();
}
}
}
Command(各コマンドの抽象クラス)
abstract class Command {
String str;
abstract void output();
}
TitleCommand
class TitleCommand extends Command {
public TitleCommand(String str){
this.str = str;
}
public void output(){
System.out.println("タイトル:" + str);
}
}
TextCommand
class TextCommand extends Command {
public TextCommand (String str){
this.str = str;
}
public void output(){
System.out.println("内容:" + str);
}
}
PriceCommand
class PriceCommand extends Command {
public PriceCommand(String str){
this.str = str;
}
public void output(){
System.out.println("価格:" + str);
}
}
実行結果
タイトル:Java 入門 内容:Java の基礎を解説 価格:2000 タイトル:Java 応用 内容:基礎の次のステップ 価格:2500現在は タイトル→内容→価格 の順に表示しているが、表示する順番を変更するときはコマンドの順番を変更するだけでよい。コマンドの取り消しも実装可能。 コマンドパターンでは、一度作成したコマンドをそのまま再利用することができる。 クラス図
Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |