在JAVA中应用MVC概念

在JAVA中应用MVC概念,java,Java,你好 关于我的,为了适应所建议的MVC概念,我修改了我的代码并包括一个IO类,如下所示: public class IO { public void output(String msg) { JOptionPane.showMessageDialog(null, msg); } public String input(String prompt) { return JOptionPane.sho

你好

关于我的,为了适应所建议的MVC概念,我修改了我的代码并包括一个IO类,如下所示:

  public class IO {
        public void output(String msg) {
            JOptionPane.showMessageDialog(null, msg);
        }

        public String input(String prompt) {
            return JOptionPane.showInputDialog(prompt);
        }

        public int inputInt(String prompt) {
            return Integer.parseInt(input(prompt));
        }
    }


   public class GuessGame {

    private int numberToGuess;
    private ArrayList<Player> player;
    private IO io = new IO ();

    public void acceptPlayers(){
        int num_players = io.inputInt("Enter number of players");  
        player = new ArrayList<Player>(num_players);
        for (int i = 0; i < num_players; i++) {
            player.add(new Player(io.input("Enter Player " + (i+1) + " Name: ")));
        }
    }

    public void startGame() {
        numberToGuess = (int) (Math.random() * 10);
        while (true) {
            for (Player curPlayer : player) {
                if (curPlayer.guessNumber() == numberToGuess) {
                    declareWinner(curPlayer);
                    return;
                }
                io.output(curPlayer.getPlayerName() + "'s Guess is Wrong!");
            }
        }
    }

    private void declareWinner(Player player) {
        io.output(player.getPlayerName() + " Wins!");
    }
}
公共类IO{
公共无效输出(字符串msg){
showMessageDialog(null,msg);
}
公共字符串输入(字符串提示){
返回JOptionPane.showInputDialog(提示);
}
公共int输入(字符串提示){
返回Integer.parseInt(输入(提示));
}
}
公开课猜谜游戏{
私人整数猜测;
私人ArrayList播放器;
私有IO=新IO();
公众参与人(){
int num_players=io.inputInt(“输入玩家数量”);
player=新阵列列表(num_players);
对于(int i=0;i

这是正确的吗?如何改进代码?谢谢。

在上述代码中,您不能将视图i.IO从图形界面更改为命令行界面。 如果将IO更改为一个接口,将一个类GraphicalIO更改为显示图形界面,将另一个类CommandLineIO更改为显示命令行界面,则可以充分利用OOP概念


同样对于MVC模式,如果您将生成视图和猜测游戏的IO作为模型和控制器,因为它具有逻辑和程序控制,它仍然没有完全分开。猜游戏与IO对象紧密耦合,而IO对象又与图形视图紧密耦合。

IO类将在MVC模型中呈现您的视图

猜谜游戏类有很多责任,这个类是为你的模型和控制器,你必须分裂它

您可以创建一个游戏类,其状态为numberToGuess和ArrayList player; 对于addPlayer()和start()方法

然后,您可以拥有一个GameControlled类,该类的状态为IO类和一个Game类。
对于方法acceptPlayers(),*startGame()*,declareWinner(Player-Player)。

看起来不错,但请记住,在java/c等语言中,视图和控制器角色都由GUI处理(因为这些语言提供了事件系统)