Java中的MVC

Java中的MVC,java,model-view-controller,Java,Model View Controller,这是关于学校的作业,所以我试着按书办事。我觉得我已经掌握了Java,但是良好的编程实践、设计模式等对我来说都是全新的 我制作了我的模型,效果很好。它包含一个学生类,其中包含许多包含学生信息的字段(显然)。现在,我希望这些信息显示在几个jlabel中。将整个student对象传递到GUI并多次使用JLabel.settext.getname()等是最简单的方法,毫无疑问,这将非常有效。但是我觉得student对象是模型的一部分,通过将其传递给GUI,我不再使用MVC模式。我就在这里吗 我确实制作了

这是关于学校的作业,所以我试着按书办事。我觉得我已经掌握了Java,但是良好的编程实践、设计模式等对我来说都是全新的

我制作了我的模型,效果很好。它包含一个学生类,其中包含许多包含学生信息的字段(显然)。现在,我希望这些信息显示在几个jlabel中。将整个student对象传递到GUI并多次使用JLabel.settext.getname()等是最简单的方法,毫无疑问,这将非常有效。但是我觉得student对象是模型的一部分,通过将其传递给GUI,我不再使用MVC模式。我就在这里吗

我确实制作了一个控制器对象,用于在模型和GUI之间传递数据,但是为了只向标签传递字符串或通过控制器设置JLabel文本,我需要在GUI中使用大量的setter,或者我必须使所有JLabel全局字段都感觉不好


有什么建议吗

GUI应该考虑所有的界面内容。我猜你有一个类,它是你用jlabel对学生做“东西”的GUI。只需将你的学生实例传递给这个类,让它做它需要做的事情。完成后,它将调用一个控制器方法来执行任何需要执行的操作


OOD处理的是传递您想要操纵的对象。传入MVC时不需要将对象分开。如果这是一般情况,你应该把它传给别人。模型定义了您将使用的数据对象。。。或者更具体地说,系统将使用(控制器),用户将使用(GUI)。这些类是为传递而构建的。如果取消封装所有信息,您将不得不做更多的工作(呵呵:)

请注意,Swing组件都在内部使用MVC模式,因此它们已经有了一个模型。这与JTable这样的复杂小部件更相关,在JTable中,您肯定希望您的模型实现
TableModel
接口


最大的问题是如何协调域模型与各个Swing组件的内部模型。一种方法是在GUI类中有
setModel()
getModel()
方法,它们在它们之间进行转换,即
setModel()
获取您的模型并在各个JLabel上调用
setText()
。视图需要您的模型来创建UI(从模型中提取)并从中接收更新(按模型推送)。理想情况下,模型以只读方式呈现给视图。控制器将提供视图用于更新模型的方法,以便更好地分离关注点

MVC到底是什么有很多不同的形式和解释,试着用谷歌搜索一下。此外,你经常可以在你的应用程序中找到不同级别的MVC(例如Swing模型、你的域模型等等)

使用MVC和MVC上的变体,最重要的是您可以解释单个子模式(观察者、外观等)并捍卫您所做的设计选择(优点/缺点),而不是尝试实现唯一的MVC模式(如果它存在的话)


因此,如果可能的话,我对你的作业的建议是,根据你在MVC及其子模式上所读到的内容,实现一些工作良好的东西,然后再看看它对一些“传统”的同意或不同意程度你可以找到MVC模式的描述。

没错,但不要忘记家庭作业通常与你的老师有关,而与家庭作业无关。遗憾的是。