正确将MVC与DAO和Bean结合使用

问题描述

这篇文章会更长一些,但是我有一些严重的疑问,我想尽可能清楚地解释情况。

我有一个使用数据库作为持久层并实现MVC模式的应用程序。由于我使用JavaFX作为图形框架,因此将应用程序划分为“更大”的部分:

  • 视图:fxml文件+抽象的View类,该类有助于我实现装饰器模式,并使用带有“最小化”和“关闭”按钮的较大borderpane作为“ ConcreteComponent”进行装饰其他视图,例如LoginView,UserPageView等。
  • 控制器:FXML控制器,其中@FXML引用了fxml文件的对象。
  • 模型:每个模型均由实体类(类似于BCE)+业务逻辑和DAO引用组成,以从数据库中检索信息。

这是我的问题所在:

由于我试图用Pull-Model结构实现MVC,所以我做了以下事情:

  1. 可以观察到模型类,而Bean类则观察模型。
  2. 每个控制器都实例化所需的模型和相对bean,并将其作为观察者附加到模型。然后,我将@FXML引用绑定到bean属性,以从模型中获取更新的值并将其提供给视图。

现在,我不了解由于用户的交互而应如何管理模型的更改:我知道控制器和视图必须引用bean来检索数据,并且它们不应该直接从模型中请求状态的更改,但是例如,当由于用户想要更改其用户名而不得不更新模型状态时,我应该为“ .setUsername()”方法调用哪些类?

我认为我不应该引用该模型,因为作为我将在帖子末尾链接的图像,Controllers在Beans上进行.set()调用,但是bean从不在Model上进行Set(如果我了解正确的模式),因此,我的bean已使用最新信息进行了更新,但模型却没有。

我做错什么了吗? 我应该改用Model-View-Presenter结构吗?在这种情况下,我知道bean应该代表View和Presenter类之间的数据缓冲区,以解耦如何表示数据以及如何存储数据。在这种情况下,控制器有责任更新模型吗?

example

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)