将 Java 代码转换为模型视图控制器架构模式

Phi*_*ll 0 java controller model view software-design

我用java编写了一些代码来给出1到10的一些数字,然后还显示平均值。我想将其更改为模型视图控制器方法(这就是导师想要的)。我们只上过一节课,我真的不明白如何改变它。如果有人能完成这个并告诉我如何(就像他们试图教一个 5 岁的孩子一样)那会很棒。

//JAVA CODE
public class Ex4 {

    public static void main(String[] args) {
        int sum = 0;
        int average = 0;
        for (int i=1; i < 10; i++){

            sum = sum + i;
            average = sum/i;

        }
        System.out.println("The sum is " + sum);
        System.out.println("The average is " + average);

    }    
}
Run Code Online (Sandbox Code Playgroud)

Bla*_*rai 5

MVC 是一种基本模式,您可以将模型(数据)、视图(显示)和控制器(逻辑)分离到不同的文件和目录中。

这是该模型的插图:

在此处输入图片说明

以下是您当前代码的外观示例:

控制器类(包括主要方法):

public class Ex4Controller {
    //You could create a second controller, 
    //and put the main method there, 
    //then create a controller object. 
    public static void main(String[] args) {
        
        //Initialize model
        Ex4Model number = new Ex4Model(0,0.0);

        //Execute business logic 
        Ex4Controller.getSumAndAverage(number); 

        //Set view
        Ex4View.printSum(number.sum, number.average);
    }
    
    //Logic method
    private static void getSumAndAverage(Ex4Model numbers){
        
        for (int i=1; i < 10; i++){
            //Here the controller interfaces with 
            //the model
            numbers.sum = numbers.sum + i;
            numbers.average = numbers.sum/i;

        }
    }

}
Run Code Online (Sandbox Code Playgroud)

控制器类与modelview. 此类是您执行所有流程并更新模型或视图的地方。任何逻辑完成,都将在这个类中完成。如果你想得到数字的平均值,你可以编写一个getmean()在这个类中调用的方法。数据操作仅在此处完成。

这是模型类:

public class Ex4Model {

    public int sum = 0;
    public double average = 0;
    
    //Custom constructor to set values
    public Ex4Model(int sum, double average){
        this.sum = sum;
        this.average = average; 
    }

}
Run Code Online (Sandbox Code Playgroud)

这个类用于保存数据。这里不做任何逻辑。这是用于存储数据的基本数据结构。此类不与视图交互。

这是您的视图类:

public class Ex4View {

    public static void printSum(int sum, double average){
         System.out.println("The sum is " + sum);
           System.out.println("The average is " + average);
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是真实的观点,但考虑到情况,这是最好的证明。使用 Java,您可以将 Swing 文件放在这里。这些文件的作用是显示数据。您会注意到控制器将所有数据传递给此类,而不是从模型访问数据。

这将输出到控制台:

总和是 45

平均值为 5.0

MVC 需要记住的一点是,您可以拥有多个控制器、模型和视图。这是一个非常简单的例子。通过使用 MVC,开发人员和程序员能够更好地组织数据。他们知道一切都在哪里完成,而不是让视图操作某些区域的数据,而不是其他区域的数据。

我希望这是有道理的。