diff --git a/src/main/java/racingcar/RacingCarMain.java b/src/main/java/racingcar/RacingCarMain.java index 53b07564798..68fb123913b 100644 --- a/src/main/java/racingcar/RacingCarMain.java +++ b/src/main/java/racingcar/RacingCarMain.java @@ -1,11 +1,10 @@ package racingcar; -import racingcar.ui.RacingCarInputView; -import racingcar.ui.RacingCarResultView; +import racingcar.controller.RacingCarGameController; public class RacingCarMain { public static void main(String[] args) { - RacingCarGame racingCarGame = new RacingCarGame(); - racingCarGame.start(); + RacingCarGameController racingCarGameController = new RacingCarGameController(); + racingCarGameController.start(); } } diff --git a/src/main/java/racingcar/RacingCarGame.java b/src/main/java/racingcar/controller/RacingCarGameController.java similarity index 62% rename from src/main/java/racingcar/RacingCarGame.java rename to src/main/java/racingcar/controller/RacingCarGameController.java index a83d216499e..80acab41c1b 100644 --- a/src/main/java/racingcar/RacingCarGame.java +++ b/src/main/java/racingcar/controller/RacingCarGameController.java @@ -1,28 +1,31 @@ -package racingcar; +package racingcar.controller; import java.util.List; -import racingcar.ui.RacingCarInput; -import racingcar.ui.RacingCarInputView; -import racingcar.ui.RacingCarResult; -import racingcar.ui.RacingCarResultView; -import utils.RandomUtils; +import racingcar.domain.DefaultRacingCarGameWinnerStrategy; +import racingcar.domain.RacingCar; +import racingcar.domain.RacingCarFactory; +import racingcar.domain.RacingCarGameWinnerStrategy; +import racingcar.view.RacingCarInput; +import racingcar.view.RacingCarInputView; +import racingcar.view.RacingCarResult; +import racingcar.view.RacingCarResultView; -public class RacingCarGame { +public class RacingCarGameController { private final RacingCarInputView inputView; private final RacingCarResultView resultView; private final RacingCarGameWinnerStrategy winnerStrategy; - public RacingCarGame() { + public RacingCarGameController() { this(RacingCarInputView.getInstance(), RacingCarResultView.getInstance(), DefaultRacingCarGameWinnerStrategy.getInstance()); } - private RacingCarGame(RacingCarInputView inputView, - RacingCarResultView resultView, - RacingCarGameWinnerStrategy winnerStrategy) { + private RacingCarGameController(RacingCarInputView inputView, + RacingCarResultView resultView, + RacingCarGameWinnerStrategy winnerStrategy) { this.inputView = inputView; this.resultView = resultView; this.winnerStrategy = winnerStrategy; diff --git a/src/main/java/racingcar/DefaultRacingCarGameWinnerStrategy.java b/src/main/java/racingcar/domain/DefaultRacingCarGameWinnerStrategy.java similarity index 78% rename from src/main/java/racingcar/DefaultRacingCarGameWinnerStrategy.java rename to src/main/java/racingcar/domain/DefaultRacingCarGameWinnerStrategy.java index a75e7ba3222..b7dc5597dc2 100644 --- a/src/main/java/racingcar/DefaultRacingCarGameWinnerStrategy.java +++ b/src/main/java/racingcar/domain/DefaultRacingCarGameWinnerStrategy.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.domain; import java.util.ArrayList; import java.util.Collections; @@ -15,24 +15,27 @@ public static DefaultRacingCarGameWinnerStrategy getInstance() { return INSTANCE; } - private List sort(List racingCars) { - racingCars = new ArrayList<>(racingCars); - Collections.sort(racingCars); - return racingCars; - } - @Override public List getWinners(List racingCars) { if (racingCars == null || racingCars.isEmpty()) { return Collections.emptyList(); } - racingCars = sort(racingCars); - RacingCar winner = racingCars.get(0); + RacingCar firstPlace = getFirstPlace(racingCars); return racingCars .stream() - .filter(car -> winner.compareTo(car) == 0) + .filter(car -> firstPlace.compareTo(car) == 0) .collect(Collectors.toList()); } + + private RacingCar getFirstPlace(List racingCars) { + return sort(racingCars).get(0); + } + + private List sort(List racingCars) { + racingCars = new ArrayList<>(racingCars); + Collections.sort(racingCars); + return racingCars; + } } diff --git a/src/main/java/racingcar/RacingCar.java b/src/main/java/racingcar/domain/RacingCar.java similarity index 94% rename from src/main/java/racingcar/RacingCar.java rename to src/main/java/racingcar/domain/RacingCar.java index 7a21b453941..5d1eb2e2206 100644 --- a/src/main/java/racingcar/RacingCar.java +++ b/src/main/java/racingcar/domain/RacingCar.java @@ -1,6 +1,6 @@ -package racingcar; +package racingcar.domain; -import racingcar.ui.RacingCarResult; +import racingcar.view.RacingCarResult; import utils.RandomUtils; public class RacingCar implements Comparable { diff --git a/src/main/java/racingcar/RacingCarFactory.java b/src/main/java/racingcar/domain/RacingCarFactory.java similarity index 93% rename from src/main/java/racingcar/RacingCarFactory.java rename to src/main/java/racingcar/domain/RacingCarFactory.java index cedeb269c63..54885ee479b 100644 --- a/src/main/java/racingcar/RacingCarFactory.java +++ b/src/main/java/racingcar/domain/RacingCarFactory.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.domain; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/racingcar/RacingCarGameWinnerStrategy.java b/src/main/java/racingcar/domain/RacingCarGameWinnerStrategy.java similarity index 83% rename from src/main/java/racingcar/RacingCarGameWinnerStrategy.java rename to src/main/java/racingcar/domain/RacingCarGameWinnerStrategy.java index 4ffa8095b79..b286d6347c4 100644 --- a/src/main/java/racingcar/RacingCarGameWinnerStrategy.java +++ b/src/main/java/racingcar/domain/RacingCarGameWinnerStrategy.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.domain; import java.util.List; diff --git a/src/main/java/racingcar/RacingCarMoveStrategy.java b/src/main/java/racingcar/domain/RacingCarMoveStrategy.java similarity index 77% rename from src/main/java/racingcar/RacingCarMoveStrategy.java rename to src/main/java/racingcar/domain/RacingCarMoveStrategy.java index 3582dba326c..791945ccfbc 100644 --- a/src/main/java/racingcar/RacingCarMoveStrategy.java +++ b/src/main/java/racingcar/domain/RacingCarMoveStrategy.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.domain; @FunctionalInterface public interface RacingCarMoveStrategy { diff --git a/src/main/java/racingcar/RacingCarName.java b/src/main/java/racingcar/domain/RacingCarName.java similarity index 94% rename from src/main/java/racingcar/RacingCarName.java rename to src/main/java/racingcar/domain/RacingCarName.java index 2e004301a60..322fdc6ed80 100644 --- a/src/main/java/racingcar/RacingCarName.java +++ b/src/main/java/racingcar/domain/RacingCarName.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.domain; public class RacingCarName { diff --git a/src/main/java/racingcar/RandomRacingCarMoveStrategy.java b/src/main/java/racingcar/domain/RandomRacingCarMoveStrategy.java similarity index 94% rename from src/main/java/racingcar/RandomRacingCarMoveStrategy.java rename to src/main/java/racingcar/domain/RandomRacingCarMoveStrategy.java index 76fd53886f3..a3cc07a2d00 100644 --- a/src/main/java/racingcar/RandomRacingCarMoveStrategy.java +++ b/src/main/java/racingcar/domain/RandomRacingCarMoveStrategy.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.domain; import utils.RandomUtils; diff --git a/src/main/java/racingcar/ui/RacingCarInput.java b/src/main/java/racingcar/view/RacingCarInput.java similarity index 97% rename from src/main/java/racingcar/ui/RacingCarInput.java rename to src/main/java/racingcar/view/RacingCarInput.java index 5354d3ce567..f537e1a2dca 100644 --- a/src/main/java/racingcar/ui/RacingCarInput.java +++ b/src/main/java/racingcar/view/RacingCarInput.java @@ -1,4 +1,4 @@ -package racingcar.ui; +package racingcar.view; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/racingcar/ui/RacingCarInputView.java b/src/main/java/racingcar/view/RacingCarInputView.java similarity index 94% rename from src/main/java/racingcar/ui/RacingCarInputView.java rename to src/main/java/racingcar/view/RacingCarInputView.java index 6f31e74f5e7..f0dfdbd219c 100644 --- a/src/main/java/racingcar/ui/RacingCarInputView.java +++ b/src/main/java/racingcar/view/RacingCarInputView.java @@ -1,6 +1,5 @@ -package racingcar.ui; +package racingcar.view; -import java.util.List; import java.util.Scanner; public class RacingCarInputView { diff --git a/src/main/java/racingcar/ui/RacingCarResult.java b/src/main/java/racingcar/view/RacingCarResult.java similarity index 92% rename from src/main/java/racingcar/ui/RacingCarResult.java rename to src/main/java/racingcar/view/RacingCarResult.java index 8a701071e00..78531adf32b 100644 --- a/src/main/java/racingcar/ui/RacingCarResult.java +++ b/src/main/java/racingcar/view/RacingCarResult.java @@ -1,8 +1,8 @@ -package racingcar.ui; +package racingcar.view; import java.util.List; -import racingcar.RacingCar; +import racingcar.domain.RacingCar; import static java.util.stream.Collectors.toList; diff --git a/src/main/java/racingcar/ui/RacingCarResultView.java b/src/main/java/racingcar/view/RacingCarResultView.java similarity index 94% rename from src/main/java/racingcar/ui/RacingCarResultView.java rename to src/main/java/racingcar/view/RacingCarResultView.java index 71dc8267b15..bff8b001f56 100644 --- a/src/main/java/racingcar/ui/RacingCarResultView.java +++ b/src/main/java/racingcar/view/RacingCarResultView.java @@ -1,9 +1,7 @@ -package racingcar.ui; +package racingcar.view; import java.util.List; -import racingcar.RacingCar; - public class RacingCarResultView { private final static RacingCarResultView INSTANCE = new RacingCarResultView(); diff --git a/src/test/java/racingcar/DefaultRacingCarGameWinnerStrategyTest.java b/src/test/java/racingcar/domain/DefaultRacingCarGameControllerWinnerStrategyTest.java similarity index 90% rename from src/test/java/racingcar/DefaultRacingCarGameWinnerStrategyTest.java rename to src/test/java/racingcar/domain/DefaultRacingCarGameControllerWinnerStrategyTest.java index eaf842fbd34..12a6ecfee8a 100644 --- a/src/test/java/racingcar/DefaultRacingCarGameWinnerStrategyTest.java +++ b/src/test/java/racingcar/domain/DefaultRacingCarGameControllerWinnerStrategyTest.java @@ -1,16 +1,14 @@ -package racingcar; +package racingcar.domain; -import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -class DefaultRacingCarGameWinnerStrategyTest { +class DefaultRacingCarGameControllerWinnerStrategyTest { @Test void 동점이면_모두_winner다() { diff --git a/src/test/java/racingcar/RacingCarNameTest.java b/src/test/java/racingcar/domain/RacingCarNameTest.java similarity index 89% rename from src/test/java/racingcar/RacingCarNameTest.java rename to src/test/java/racingcar/domain/RacingCarNameTest.java index 62b4bd268da..56bce1df1cf 100644 --- a/src/test/java/racingcar/RacingCarNameTest.java +++ b/src/test/java/racingcar/domain/RacingCarNameTest.java @@ -1,10 +1,9 @@ -package racingcar; +package racingcar.domain; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowableOfType; -import static org.junit.jupiter.api.Assertions.*; class RacingCarNameTest { diff --git a/src/test/java/racingcar/RacingCarTest.java b/src/test/java/racingcar/domain/RacingCarTest.java similarity index 95% rename from src/test/java/racingcar/RacingCarTest.java rename to src/test/java/racingcar/domain/RacingCarTest.java index 1f47d6f57c7..ad3b4ba4eee 100644 --- a/src/test/java/racingcar/RacingCarTest.java +++ b/src/test/java/racingcar/domain/RacingCarTest.java @@ -1,6 +1,5 @@ -package racingcar; +package racingcar.domain; -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; diff --git a/src/test/java/racingcar/ui/RacingCarInputTest.java b/src/test/java/racingcar/view/RacingCarInputTest.java similarity index 92% rename from src/test/java/racingcar/ui/RacingCarInputTest.java rename to src/test/java/racingcar/view/RacingCarInputTest.java index 19da58dd762..d3d5f2c65f3 100644 --- a/src/test/java/racingcar/ui/RacingCarInputTest.java +++ b/src/test/java/racingcar/view/RacingCarInputTest.java @@ -1,10 +1,9 @@ -package racingcar.ui; +package racingcar.view; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowableOfType; -import static org.junit.jupiter.api.Assertions.*; class RacingCarInputTest {