【问题标题】:Injecting MVC Model class in another Model class in Java [closed]在Java中的另一个模型类中注入MVC​​模型类[关闭]
【发布时间】:2018-11-13 09:01:48
【问题描述】:

我目前正在开发一个 JavaFX 项目,并且我读到强烈建议使用 MVC 模式 来开发它。在我的项目中,我有 Controller 类,它们具有对其相应模型的引用。

在我的项目中,我希望一个 Model 直接监听另一个 Model 中的变化,而不是在 Controller 类中这样做。

将一个 Model 类注入另一个类以便第一个 Model 引用另一个是一种好习惯吗?它会破坏 MVC 模式吗?

【问题讨论】:

  • 允许模型引用其他模型。
  • 当然可以。想象一下我有一个Team 课程。如果Team 类不能保存Member 类的实例,那么它会如何工作?
  • 您可能需要查看data bindings 以实现(几乎)直接依赖关系。
  • @Jai 我的模型类包含对其相应 JPA 存储库的引用,因此在我的情况下,对于您的示例“团队”和“成员”,它们不直接通信,而是仅通过存储库进行通信。恐怕通过直接听模型到模型,我有点破坏了我的结构化实现,其中每个通信都必须在 Controller 类中提供。抱歉,如果我让您感到困惑,我会根据需要提供更多详细信息。
  • 实际上,在 MVC 方面有很多变化。我见过一种方法,其中模型类负责一般验证以及检索和持久性。使用这种方法,模型实例可以告诉另一个模型实例保存/刷新自己。当然,有些人会不同意(我个人对此部分不同意)并认为控制器必须与存储库进行通信(即控制器拥有业务逻辑,因此它是决定的人何时获取/保存数据。

标签: java spring-mvc javafx model-view-controller


【解决方案1】:

正如@khelwood 所建议的 - 将内部“子模型”类注入现有模型类是合法的。

1) MVC

这不会破坏 MVC 模式,只是为您的模型添加内层。

这是否需要取决于您的应用程序需求。

2) 模型更新

如果您的模型数据在外部更新(例如每秒更改的计时器参数),那么我建议:

a) 在您的 Model 类中创建一个 通知回调方法,任何 Controller 都可以订阅该方法。

示例:Model.OnUpdate()

b) 再次触发由您的 Controller 类处理的自定义事件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 2012-12-02
    • 1970-01-01
    • 2014-11-18
    • 2022-01-05
    • 2011-05-13
    • 2011-03-04
    • 2016-05-09
    相关资源
    最近更新 更多