gpt4 book ai didi

java - 使 Java Swing 应用程序持久化

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:42 28 4
gpt4 key购买 nike

我想为基于 Swing 的应用程序添加持久性;这是我第一次做这样的事情。

我知道如何使用 Java 序列化 API(尽管我使用的是 xstream),我知道 JComponent 是可序列化的,但我对更多的架构考虑感兴趣:应如何设计应用程序以使其持久化简单的;等等

我很高兴看到任何对这些问题进行深入考虑的消息来源,尽管我也很高兴明确地听到一些最佳实践:)

最佳答案

你应该使用 model-view-controller approach .您只序列化模型,而不是 View 。 View 应该从模型中填充。无论如何,根本不推荐序列化 Swing 组件:

While Swing components do implement the Serializable interface, they are not portable between different versions of the Java Virtual Machine

看看你有什么,你应该有一些类是你的模型并且只有数据。这些类将在某处使用 XStream 进行序列化。然后,您的 Swing 类具有接收这些模型类并填充字段和编辑器的方法。然后,您可以扩展 UI,例如,无需更改类、添加更多功能或为同一数据集提供不同的 View 。

为了让它更漂亮,Swing 组件不应存储和加载模型,但您应该有一个 Controller 接口(interface),您将其传递给 swing 组件以执行这些操作。这样,您可以更好地进行单元测试,并将存储逻辑与 View 逻辑分离。

如果 XStream 配置正确,并且您对模型和字段非常小心,则应该可以在不破坏向后兼容性的情况下向模型类添加更多字段。

无论如何我都不建议使用 Java 序列化,因为将它用于存储不是一个好习惯。 Java 序列化在远程方法调用方面表现出色。当模型类改变时它相对脆弱..

关于java - 使 Java Swing 应用程序持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921375/

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