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]
This commit is contained in:
@@ -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.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
|
|
||||||
public interface CommandFactory {
|
/**
|
||||||
|
* Factory class for Command objects
|
||||||
void runCommand(MockBoat boat, MockRace race);
|
*/
|
||||||
|
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.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
import mock.model.VMG;
|
|
||||||
import shared.model.Bearing;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by David on 2/08/2017.
|
* 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
|
//The refactoring of MockRace will require changes to be made
|
||||||
@Override
|
@Override
|
||||||
public void runCommand(MockBoat boat, MockRace race) {
|
public void execute() {
|
||||||
/*VMG newVMG = boat.getPolars().calculateVMG(
|
/*VMG newVMG = boat.getPolars().calculateVMG(
|
||||||
race.getWindDirection(),
|
race.getWindDirection(),
|
||||||
race.getWindSpeed(),
|
race.getWindSpeed(),
|
||||||
|
|||||||
@@ -2,17 +2,22 @@ package mock.model.commandFactory;
|
|||||||
|
|
||||||
import mock.model.MockBoat;
|
import mock.model.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
import mock.model.VMG;
|
|
||||||
import shared.model.Bearing;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by David on 2/08/2017.
|
* 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
|
//The refactoring of MockRace will require changes to be made
|
||||||
@Override
|
@Override
|
||||||
public void runCommand(MockBoat boat, MockRace race) {
|
public void execute() {
|
||||||
/*VMG newVMG = boat.getPolars().calculateVMG(
|
/*VMG newVMG = boat.getPolars().calculateVMG(
|
||||||
race.getWindDirection(),
|
race.getWindDirection(),
|
||||||
race.getWindSpeed(),
|
race.getWindSpeed(),
|
||||||
|
|||||||
Reference in New Issue
Block a user