<aside> ❓
MVC는 어플리케이션의 사용자 인터페이스, 비즈니스 로직, 데이터의 세 가지 주요 구성 요소를 분리하여 각 요소가 서로에게 미치는 영향을 최소화하기 위한 목적을 가지는 소프트웨어 디자인 패턴
</aside>
// Model
class GameModel {
private int targetNumber;
public GameModel() {
this.targetNumber = (int) (Math.random() * 10) + 1;
}
public int getTargetNumber() {
return targetNumber;
}
}
// Service
class GameService {
private GameModel model;
public GameService(GameModel model) {
this.model = model;
}
public boolean isGuessCorrect(int guess) {
return guess == model.getTargetNumber();
}
public String provideHint(int guess) {
if (guess > model.getTargetNumber()) {
return "더 낮은 숫자를 시도해보세요!";
} else {
return "더 높은 숫자를 시도해보세요!";
}
}
}
// View
class GameView {
public int getUserInput() {
Scanner scanner = new Scanner(System.in);
System.out.print("1부터 10까지의 숫자 중 하나를 입력하세요: ");
return scanner.nextInt();
}
public void displayResult(boolean isCorrect) {
if (isCorrect) {
System.out.println("정답입니다!");
} else {
System.out.println("틀렸습니다. 다시 시도하세요.");
}
}
public void displayHint(String hint) {
System.out.println(hint);
}
}
// Controller
class GameController {
private GameService service;
private GameView view;
public GameController(GameService service, GameView view) {
this.service = service;
this.view = view;
}
public void play() {
while (true) {
int userGuess = view.getUserInput();
if (service.isGuessCorrect(userGuess)) {
view.displayResult(true);
break;
} else {
view.displayResult(false);
view.displayHint(service.provideHint(userGuess));
}
}
}
}
// Main
public class NumberGuessingGame {
public static void main(String[] args) {
GameModel model = new GameModel();
GameService service = new GameService(model);
GameView view = new GameView();
GameController controller = new GameController(service, view);
controller.play();
}
}