<JSTORM> Command JSTORM http://www.jstorm.pe.kr
Command Issued by: < > Revision: <1.0> <2001/7/16> Document Information Document title: Command Document file name: Revision number: <1.0> Issued by: Issue Date: <2001/07/16> Status: FundamentalOfCommandPattern_calmglow_pa ttern_jstorm_1.0_final.doc < > csecau@orgio.net Final Content Information Audience Abstract Reference Benchmark information Command http://www.javaworld.com/javaworld/javatips/jwjavatip68_p.html JSTORM <2/2>
Command Issued by: < > Table of Contents Command... 4 Command... 6 Transaction Command...9 JSTORM <3/3>
Command Issued by: < > JSTORM <4/4>. Callback.,. Command Pattern.
Command Issued by: < > JSTORM <5/5>
Command Issued by: < > Command TestCommand.java class Fan { public void startrotate() { System.out.println("Fan is rotating"); JSTORM <6/6>
Command Issued by: < > public void stoprotate() { System.out.println("Fan is not rotating"); class Light { public void turnon( ) { System.out.println("Light is on "); public void turnoff( ) { System.out.println("Light is off"); class Switch { private Command UpCommand, DownCommand; public Switch( Command Up, Command Down) { UpCommand = Up; // concret e Command registers itself with the invoker DownCommand = Down; void flipup( ) { // invoker calls back concrete Command, which executes the Command on the receiver UpCommand. execute ( ) ; void flipdown( ) { DownCommand. execute ( ); class LightOnCommand implements Command { private Light mylight; public LightOnCommand ( Light L) { mylight = L; public void execute( ) { mylight. turnon( ); class LightOffCommand implements Command { JSTORM <7/7>
Command Issued by: < > private Light mylight; public LightOffCommand ( Light L) { mylight = L; public void execute( ) { mylight. turnoff( ); class FanOnCommand implements Command { private Fan myfan; public FanOnCommand ( Fan F) { myfan = F; public void execute( ) { myfan. startrotate( ); class FanOffCommand implements Command { private Fan myfan; public FanOffCommand ( Fan F) { myfan = F; public void execute( ) { myfan. stoprotate( ); public class TestCommand { public static void main(string[] args) { Light testlight = new Light( ); LightOnCommand testloc = new LightOnCommand(testLight); LightOffCommand testlfc = new LightOffCommand(testLight); Switch testswitch = new Switch( testloc,testlfc); testswitch.flipup( ); JSTORM <8/8>
Command Issued by: < > testswitch.flipdown( ); Fan testfan = new Fan( ); FanOnCommand foc = new FanOnCommand(testFan); FanOffCommand ffc = new FanOffCommand(testFan); Switch ts = new Switch( foc,ffc); ts.flipup( ); ts.flipdown( ); Command.java public interface Command { public abstract void execute ( ); Transaction Command JSTORM <9/9>
Command Issued by: < > //TestTransactionCommand.java import java.util.*; final class CommandReceiver { private int[] c; private CommandArgument a; private CommandReceiver(){ c = new int[2]; private static CommandReceiver cr = new CommandReceiver(); public static CommandReceiver gethandle() { return cr; public void setcommandargument(commandargument a) { this.a = a; public void methadd() { c = a.getarguments(); System.out.println("The result is " + (c[0]+c[1])); public void methsubtract() { JSTORM <10/10>
Command Issued by: < > c = a.getarguments(); System.out.println("The result is " + (c[0] -c[1])); class CommandManager { private Command mycommand; public CommandManager(Command mycommand) { this.mycommand = mycommand ; public void runcommands( ) { mycommand.execute(); class TransactionCommand implements Command { private CommandReceiver commandreceiver; private Vector commandnamelist,commandargumentlist; private String commandname; private CommandArgument commandargument; private Command command; public TransactionCommand () { this(null,null); public TransactionCommand ( Vector commandnamelist, Vector commandargumentlist){ this.commandnamelist = commandnamelist; this.commandargumentlist = commandargumentlist; commandreceiver = CommandReceiver.getHandle(); public void execute( ) { for (int i = 0; i < commandnamelist.size(); i++) { commandname = (String)(commandnamelist.get(i)); JSTORM <11/11>
Command Issued by: < > commandargument = (CommandArgument)((commandargumentlist.get(i))); commandreceiver.setcommandargument(commandargument); String classname = commandname + "Command"; try { Class cls = Class.forName(classname); command = (Command) cls.newinstance(); catch (Throwable e) { System.err.println(e); command.execute(); class AddCommand extends TransactionCommand { private CommandReceiver cr; public AddCommand () { cr = CommandReceiver.getHandle(); public void execute( ) { cr.methadd(); class SubtractCommand extends TransactionCommand { private CommandReceiver cr; public SubtractCommand () { cr = CommandReceiver.getHandle(); public void execute( ) { cr.methsubtract(); class CommandA rgument { private int[] args; JSTORM <12/12>
Command Issued by: < > CommandArgument() { args = new int[2]; public int[] getarguments() { return args; public void setargument(int i1, int i2) { args[0] = i1; args[1] = i2; public class TestTransactionCommand { private Vector clist,alist; public TestTransactionCommand() { clist = new Vector(); alist = new Vector(); public void clearbuffer(vector c, Vector a) { clist.removeall(c); alist.removeall(a); public Vector getclist() { return clist; public Vector getalist() { return alist; public static void main(string[] args) { CommandArgument ca,ca2; TestTransactionCommand t = new TestTransactionCommand(); ca = new CommandArgument(); ca.setargument(2,8); Vector myclist = t.getclist(); Vector myalist = t.getalist(); myclist.addelement("add"); myalist.addelement(ca); JSTORM <13/13>
Command Issued by: < > TransactionCommand tc = new TransactionCommand(myclist,myalist); CommandManager cm = new CommandManager(tc); cm.runcommands(); t.clearbuffer(myclist,myalist); ca2 = new CommandArgument(); ca2.setargument(5,7); myclist = t.getclist(); myalist = t.get Alist(); myclist.addelement("subtract"); myalist.addelement(ca2); myclist.addelement("add"); myalist.addelement(ca2); TransactionCommand tc2 = new TransactionCommand(myclist,myalist); CommandManager cm2 = new CommandManager(tc2); cm2.runcommands(); JSTORM <14/14>