jkf*_*kff 5 java architecture swing persistence
我想为基于Swing的应用程序添加持久性; 这是我第一次做这样的事情.
我知道如何使用Java序列化API(虽然我使用的是xstream),我知道JComponent是可序列化的,但我对更多架构考虑感兴趣:应该如何设计应用程序以使其持久化变得容易; 等等
我很高兴看到有任何消息来源深入考虑这些问题,但我也很高兴听到一些明确的最佳实践:)
您应该使用模型 - 视图 - 控制器方法.您只序列化模型,而不是视图.应从模型中填充视图.无论如何,根本不建议序列化Swing组件:
看看你有什么,你应该有一些你的模型类,只有数据.这些类将在某处使用XStream进行序列化.然后,您的Swing Classes有方法来接收这些模型类并填充字段和编辑器.然后,您可以扩展UI,例如,无需更改类,添加更多功能,或为同一数据集提供不同的视图.
为了使它更加漂亮,Swing组件不应该存储和加载模型,但是您应该有一个控制器接口,您可以将其传递给swing组件来执行这些操作.这样,您可以更好地进行单元测试,并将存储逻辑与视图逻辑分离.
如果正确配置了XStream,并且您对模型和字段非常小心,则应该可以向模型类添加更多字段,而不会破坏向后兼容性.
我不建议使用Java Serialization,因为将它用于存储不是一个好习惯.Java Serialization擅长远程方法调用.模型类改变时相对脆弱.