gpt4 book ai didi

java - Java 中正确的 MVC 实现

转载 作者:搜寻专家 更新时间:2023-11-01 03:29:10 25 4
gpt4 key购买 nike

我仍在尝试了解什么是实现 MVC 的正确方法。本例 @oracle表示该 View 可以访问 Controller 。还有另一个教程 @leepoint表示 View 可以访问模型。这些是 MVC 的不同变体吗?在我的例子中,我按照 Oracle 站点上的教程进行了一些修改(我在 AbstractController getModelProperty 中添加了一个函数,这将允许我检索当前注册模型的字段的值,但我也可以感觉到传递模型作为参数(如 leepoint 教程中所示)以简化并可能优化 View 的数据访问。

提前致谢。

最佳答案

View 绑定(bind)到模型。由于 View 渲染模型,因此它们必须对模型有深入的了解,所以根本没有办法绕过它。有些 View 是通用的,并且这些 View 具有“通用”模型。在这里,您可以尝试使您的实际模型符合通用模型,以便“通用” View 可以使用您的数据。但即使使用这些通用模型, View 仍然与它们紧密绑定(bind)。

模型管理数据、状态。虽然 View 对模型有深入了解,但模型与 View 无关。它根本不在乎。这样您就可以对同一模型有多个 View 。

但是,模型必须将模型的更改通知其他人。通常在 Java 中,您使用 PropertyChangeListener。这种机制让模型可以大声说出变化,任何感兴趣的人都可以听到这些变化并采取行动,例如您的观点。

一个简单的例子是,您的游戏对象可能会受到子弹的伤害,并且它的生命值会降低到 50% 以下。该 View 可以看到健康状况已降低并更改模型的图像(比如添加烟雾或其他)。

Controller 通常与 View 和模型紧密绑定(bind)。它知道 View 的功能(比如它的大小和其他感兴趣的区域),并且它知道如何更改模型。例如单击鼠标时, Controller 将鼠标点转换为相对于 View 的坐标,并据此确定单击了哪个对象。一旦它确定了被点击的对象,它就可以将该对象的模型设置为“已选择”。

然后模型广播它的“selected”属性已经改变。 View 看到这一点,找到已更改模型的边界矩形,并在其显示上使该矩形无效。

最后,Java 出现并告诉 View “嘿,需要绘制 Rect 10,10,100,100”。然后 View 在该矩形中找到模型,使用“选定”边框或其他任何内容绘制对象的新 View 。

这就是整个循环的运作方式。

关于java - Java 中正确的 MVC 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5112580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com