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

时间:2015-03-29 02:38:45

标签: java view model controller 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);

    }    
}

3 个答案:

答案 0 :(得分:4)

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

以下是此模型的说明:

enter image description here

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

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

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;

        }
    }

}

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

这是Model类:

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; 
    }

}

此类用于保存数据。这里没有逻辑。这是用于存放数据的基本数据结构。此类不与视图接口。

这是你的观点类:

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);
    }
}

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

这将输出到控制台:

  

总和是45

     

平均值为5.0

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

我希望这是有道理的。

答案 1 :(得分:0)

作为(非常)粗略的准则:

模型:存储数据。在这种情况下,总和和平均值。

查看:显示数据。在这种情况下,使用System.out写出数据。模型更改时,更新显示(将新值写出)。

控制器:处理数据。在这种情况下,采用一组int,计算总和和平均值,并将结果提供给模型。

总的来说,Controller计算总和&amp;平均值,将这些值提供给模型。通知视图模型已更改。视图显示模型的值。

答案 2 :(得分:0)

创建3个类:

让我们说Ex4Model,其中只有2个成员变量sumaverage,以及相应的getset方法。这将保存您的数据。

我们可以创建视图,让我们说Ex4View,其中有一个名为render(Ex4Model model)的方法,可以从模型中输出您想要的内容,在您的情况下sum和{ {1}}。

然后,您可以创建具有方法average的控制器Ex4Controller。在它内部,它执行计算并将它们提供给模型(在这个简单的示例中,您可以创建它的新实例),然后在视图上调用calculate()

其余的是你加入,这是你的功课。