通过JSON或数据库传输数据?

时间:2016-11-30 16:52:06

标签: javafx javafx-8

我创建了包含一些控制器和不同窗口的JavaFX项目。我想将数据从一个对象传输到另一个控制器。当我得到另一个窗口时,想要先前输入的数据保留在他们的字段中。是否会使用数据库并从中连续上传和下载数据是一个很好的解决方案?也许在每个控制器中创建JSON及其对象是更好的选择?有人能说点什么吗?或者提出更好的解决方案?

1 个答案:

答案 0 :(得分:0)

你有一些选择:

  • 使用数据库作为中间人:在我看来,这是一个非常糟糕的主意。数据库应该保存必须持久化的数据 他们的持久性实际上代表了问题域的概念。 一些可以保存在RAM中的临时数据不适合 那(即使它们将是重要的,并且很好地适应于... 不远的将来)。另外,它引入了诸如性能之类的问题 减少和不断需要检查各地的数据完整性(即 每次RAM中的数据发生变化时,你总是要确定 数据库也得到了更新。)
  • 用于存储状态的单例模式:您可以拥有一个包含所有临时数据的单例类。这种方法很像 数据库方法,因为你有一些数据源(作为中间人) 可以从程序中的多个点访问,但不是 它存储在RAM上的数据库。所以你会有类似的 问题,但它比数据库和持有更有效 对单例数据对象的引用,可以处理数据完整性 问题要容易得多(因为当你改变数据对象时) 引用你知道它是实际得到的原始对象 改变了,你不必担心。)

    但是这也是一个非常糟糕的主意!使用单例模式存储状态是反模式。这不是这种模式的方式 打算使用。在此处阅读更多内容:Why is Singleton considered an anti-pattern?

  • 使用像Spring这样的依赖注入框架:你可以在Spring AppicationContext中保存你的数据(单例范围)和 将它注入任何你想要的地方。这种方法本质上也是如此 类似于以前的方法,但它有点清洁,因为 你没有使用静态单例类,所以它可能会增强 您的应用程序的可测试性。
  • 使用第三方JavaFx框架:有一些JavaFx框架可以处理许多数据共享问题 控制器。您可以通过阅读我对类似问题here的回答来查看一些示例。以下是DataFx samples的示例 表示两个独立的发送者和接收者视图之间的数据共 与不同的控制器: 按发送,发送方发送数据,接收方接收数据。您可以在jar或my answer中查看详细信息。

    enter image description here

进一步阅读:

Passing Parameters JavaFX FXML