我想为基于 Swing 的应用程序添加持久性;这是我第一次做这样的事情。
我知道如何使用 Java 序列化 API(尽管我使用的是 xstream),我知道 JComponent 是可序列化的,但我对更多的架构考虑感兴趣:应如何设计应用程序以使其持久化简单的;等等
我很高兴看到任何对这些问题进行深入考虑的消息来源,尽管我也很高兴明确地听到一些最佳实践:)
最佳答案
你应该使用 model-view-controller approach .您只序列化模型,而不是 View 。 View 应该从模型中填充。无论如何,根本不推荐序列化 Swing 组件:
看看你有什么,你应该有一些类是你的模型并且只有数据。这些类将在某处使用 XStream 进行序列化。然后,您的 Swing 类具有接收这些模型类并填充字段和编辑器的方法。然后,您可以扩展 UI,例如,无需更改类、添加更多功能或为同一数据集提供不同的 View 。
为了让它更漂亮,Swing 组件不应存储和加载模型,但您应该有一个 Controller 接口(interface),您将其传递给 swing 组件以执行这些操作。这样,您可以更好地进行单元测试,并将存储逻辑与 View 逻辑分离。
如果 XStream 配置正确,并且您对模型和字段非常小心,则应该可以在不破坏向后兼容性的情况下向模型类添加更多字段。
无论如何我都不建议使用 Java 序列化,因为将它用于存储不是一个好习惯。 Java 序列化在远程方法调用方面表现出色。当模型类改变时它相对脆弱..
关于java - 使 Java Swing 应用程序持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921375/