1
0
Fork 0

a bit of Interface Segregation Principle

a bit of Interface Segregation Principle
This commit is contained in:
Xavier Fontanet 2024-06-25 19:35:51 +02:00
parent ed847ee613
commit 35d570241a
9 changed files with 39 additions and 27 deletions

View File

@ -1,6 +1,6 @@
package cat.hack3.codingtests.marsrover;
import cat.hack3.codingtests.marsrover.api.RotableRiderRover.Rotation;
import cat.hack3.codingtests.marsrover.api.RotableRover;
import cat.hack3.codingtests.marsrover.api.cartography.Coordinates;
import cat.hack3.codingtests.marsrover.api.cartography.Direction;
@ -24,7 +24,7 @@ public class RoverActionReporter {
logger.info(movementReport);
}
public void reportRotation(Rotation rotation, Direction newDirection) {
public void reportRotation(RotableRover.Rotation rotation, Direction newDirection) {
logger.info(String.format(ROTATION_REPORT_MESSGE,
rotation, newDirection));
}

View File

@ -0,0 +1,7 @@
package cat.hack3.codingtests.marsrover.api;
import cat.hack3.codingtests.marsrover.api.cartography.Coordinates;
public interface LocateableRover {
Coordinates getCurrentCoordinates();
}

View File

@ -0,0 +1,8 @@
package cat.hack3.codingtests.marsrover.api;
import cat.hack3.codingtests.marsrover.api.cartography.Direction;
public interface RiderRover {
void moveTowards(Direction direction);
Direction getCurrentDirection();
}

View File

@ -1,19 +1,9 @@
package cat.hack3.codingtests.marsrover.api;
import cat.hack3.codingtests.marsrover.api.cartography.Coordinates;
import cat.hack3.codingtests.marsrover.api.cartography.Direction;
import cat.hack3.codingtests.marsrover.api.cartography.PlanetMap;
public interface RotableRiderRover {
enum Rotation {LEFT, RIGHT}
void moveTowards(Direction direction);
void rotateTowards(Rotation rotation);
Coordinates getCurrentCoordinates();
Direction getCurrentDirection();
public interface RotableRiderRover extends RotableRover, RiderRover, LocateableRover {
interface Provider {
RotableRiderRover provideWith(PlanetMap map, Direction startingDirection);

View File

@ -0,0 +1,7 @@
package cat.hack3.codingtests.marsrover.api;
public interface RotableRover {
enum Rotation {LEFT, RIGHT}
void rotateTowards(Rotation rotation);
}

View File

@ -1,13 +1,13 @@
package cat.hack3.codingtests.marsrover.commands;
import cat.hack3.codingtests.marsrover.api.RotableRiderRover;
import cat.hack3.codingtests.marsrover.api.RiderRover;
import cat.hack3.codingtests.marsrover.api.commands.RoverCommand;
public class MoveBackwardsCommand implements RoverCommand {
private final RotableRiderRover rover;
private final RiderRover rover;
public MoveBackwardsCommand(RotableRiderRover rover) {
public MoveBackwardsCommand(RiderRover rover) {
this.rover = rover;
}

View File

@ -1,13 +1,13 @@
package cat.hack3.codingtests.marsrover.commands;
import cat.hack3.codingtests.marsrover.api.RotableRiderRover;
import cat.hack3.codingtests.marsrover.api.RiderRover;
import cat.hack3.codingtests.marsrover.api.commands.RoverCommand;
public class MoveForwardCommand implements RoverCommand {
private final RotableRiderRover rover;
private final RiderRover rover;
public MoveForwardCommand(RotableRiderRover rover) {
public MoveForwardCommand(RiderRover rover) {
this.rover = rover;
}

View File

@ -1,15 +1,15 @@
package cat.hack3.codingtests.marsrover.commands;
import cat.hack3.codingtests.marsrover.api.RotableRiderRover;
import cat.hack3.codingtests.marsrover.api.RotableRover;
import cat.hack3.codingtests.marsrover.api.commands.RoverCommand;
import static cat.hack3.codingtests.marsrover.api.RotableRiderRover.Rotation.LEFT;
import static cat.hack3.codingtests.marsrover.api.RotableRover.Rotation.LEFT;
public class TurnLeftCommand implements RoverCommand {
private final RotableRiderRover rover;
private final RotableRover rover;
public TurnLeftCommand(RotableRiderRover rover) {
public TurnLeftCommand(RotableRover rover) {
this.rover = rover;
}

View File

@ -1,15 +1,15 @@
package cat.hack3.codingtests.marsrover.commands;
import cat.hack3.codingtests.marsrover.api.RotableRiderRover;
import cat.hack3.codingtests.marsrover.api.RotableRover;
import cat.hack3.codingtests.marsrover.api.commands.RoverCommand;
import static cat.hack3.codingtests.marsrover.api.RotableRiderRover.Rotation.RIGHT;
import static cat.hack3.codingtests.marsrover.api.RotableRover.Rotation.RIGHT;
public class TurnRightCommand implements RoverCommand {
private final RotableRiderRover rover;
private final RotableRover rover;
public TurnRightCommand(RotableRiderRover rover) {
public TurnRightCommand(RotableRover rover) {
this.rover = rover;
}