Implemented Factory for Command objects and fixed Command Pattern implementation.

- Commands now have standard 0-parameter execute method
- Commands are created by CommandFactory

#story[1094]
main
Connor Taylor-Brown 8 years ago
parent 40a3ed1bb0
commit c83442761c

@ -0,0 +1,14 @@
package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
/**
* Allows RaceLogic to control MockRace state according to the Command pattern
*/
public interface Command {
/**
* Execute command - standard method name in pattern
*/
void execute();
}

@ -3,7 +3,22 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
public interface CommandFactory {
void runCommand(MockBoat boat, MockRace race);
/**
* Factory class for Command objects
*/
public class CommandFactory {
/**
* Generates a command on a race and boat corresponding to the protocol action number.
* @param race to receive command
* @param boat to receive command in race
* @param action number to select command
* @return
*/
public static Command createCommand(MockRace race, MockBoat boat, int action) {
switch(action) {
case 1: return new VMGCommand(race, boat);
case 4: return new TackGybeCommand(race, boat);
default: return null; // TODO - please please have discussion over what to default to
}
}
}

@ -2,17 +2,22 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
import mock.model.VMG;
import shared.model.Bearing;
/**
* Created by David on 2/08/2017.
*/
public class TackGybeCommand implements CommandFactory {
public class TackGybeCommand implements Command {
private MockRace race;
private MockBoat boat;
public TackGybeCommand(MockRace race, MockBoat boat) {
this.race = race;
this.boat = boat;
}
//The refactoring of MockRace will require changes to be made
@Override
public void runCommand(MockBoat boat, MockRace race) {
public void execute() {
/*VMG newVMG = boat.getPolars().calculateVMG(
race.getWindDirection(),
race.getWindSpeed(),

@ -2,17 +2,22 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
import mock.model.VMG;
import shared.model.Bearing;
/**
* Created by David on 2/08/2017.
*/
public class VMGCommand implements CommandFactory {
public class VMGCommand implements Command {
private MockRace race;
private MockBoat boat;
public VMGCommand(MockRace race, MockBoat boat) {
this.race = race;
this.boat = boat;
}
//The refactoring of MockRace will require changes to be made
@Override
public void runCommand(MockBoat boat, MockRace race) {
public void execute() {
/*VMG newVMG = boat.getPolars().calculateVMG(
race.getWindDirection(),
race.getWindSpeed(),

Loading…
Cancel
Save