From 35d570241ac9b189c4dca34016380328ad2bab4b Mon Sep 17 00:00:00 2001 From: Xavier Fontanet Date: Tue, 25 Jun 2024 19:35:51 +0200 Subject: [PATCH] a bit of Interface Segregation Principle a bit of Interface Segregation Principle --- .../codingtests/marsrover/RoverActionReporter.java | 4 ++-- .../codingtests/marsrover/api/LocateableRover.java | 7 +++++++ .../hack3/codingtests/marsrover/api/RiderRover.java | 8 ++++++++ .../codingtests/marsrover/api/RotableRiderRover.java | 12 +----------- .../codingtests/marsrover/api/RotableRover.java | 7 +++++++ .../marsrover/commands/MoveBackwardsCommand.java | 6 +++--- .../marsrover/commands/MoveForwardCommand.java | 6 +++--- .../marsrover/commands/TurnLeftCommand.java | 8 ++++---- .../marsrover/commands/TurnRightCommand.java | 8 ++++---- 9 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/LocateableRover.java create mode 100644 rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RiderRover.java create mode 100644 rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRover.java diff --git a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/RoverActionReporter.java b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/RoverActionReporter.java index 276594b..fddf927 100644 --- a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/RoverActionReporter.java +++ b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/RoverActionReporter.java @@ -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)); } diff --git a/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/LocateableRover.java b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/LocateableRover.java new file mode 100644 index 0000000..ae33aff --- /dev/null +++ b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/LocateableRover.java @@ -0,0 +1,7 @@ +package cat.hack3.codingtests.marsrover.api; + +import cat.hack3.codingtests.marsrover.api.cartography.Coordinates; + +public interface LocateableRover { + Coordinates getCurrentCoordinates(); +} diff --git a/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RiderRover.java b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RiderRover.java new file mode 100644 index 0000000..5763295 --- /dev/null +++ b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RiderRover.java @@ -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(); +} diff --git a/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRiderRover.java b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRiderRover.java index 75a4840..e6dd80d 100644 --- a/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRiderRover.java +++ b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRiderRover.java @@ -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); diff --git a/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRover.java b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRover.java new file mode 100644 index 0000000..d493811 --- /dev/null +++ b/rover-api/src/main/java/cat/hack3/codingtests/marsrover/api/RotableRover.java @@ -0,0 +1,7 @@ +package cat.hack3.codingtests.marsrover.api; + +public interface RotableRover { + enum Rotation {LEFT, RIGHT} + + void rotateTowards(Rotation rotation); +} diff --git a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveBackwardsCommand.java b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveBackwardsCommand.java index 053ab11..cc30dfc 100644 --- a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveBackwardsCommand.java +++ b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveBackwardsCommand.java @@ -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; } diff --git a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveForwardCommand.java b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveForwardCommand.java index b5b0467..0b441a3 100644 --- a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveForwardCommand.java +++ b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/MoveForwardCommand.java @@ -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; } diff --git a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnLeftCommand.java b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnLeftCommand.java index 10211f0..b6d9e66 100644 --- a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnLeftCommand.java +++ b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnLeftCommand.java @@ -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; } diff --git a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnRightCommand.java b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnRightCommand.java index 5f834e6..ffd26f8 100644 --- a/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnRightCommand.java +++ b/rover-commands/src/main/java/cat/hack3/codingtests/marsrover/commands/TurnRightCommand.java @@ -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; }