将用户数据保存在文本文件或序列化对象中

时间:2011-11-11 15:43:21

标签: java oop serialization save

我需要为我正在制作的节目保存书签。书签是Xposition,Yposition和zoom。我应该只读取和写入所有书签到文本文件,还是应该将它们放入书签对象并序列化它。我感兴趣的是哪一个被认为是更好的OO设计。

5 个答案:

答案 0 :(得分:1)

我建议保存到跨平台的文本文件。事实上,它不是一个面向对象的考虑因素,因为当你使用文本文件方法时仍然可以在oo中编程,例如,带有文本文件源的数据访问对象不违反oo概念。

答案 1 :(得分:1)

java序列化是脆弱的,所以如果你的目的是长时间保留一些配置数据,这可能存在于你的程序的多个版本中,那么可能文本文件是你最好的选择。

格式取决于你,xml,json,csv

如果您决定使用java序列化,我建议您将数据存储到HashMap中

并在地图上包裹你的访问者

public class Config {

    private HashMap map; 
    Congif(HashMap map) { this.map = map; }

    <T> T get(Class<T> clazz, String key) {
        return (T) map.get(key);
    }

    void put(String key, Serializable value) {
        map.put(key, value);
    }
} 

答案 2 :(得分:0)

使用对象通常是最好的面向对象设计。

为了便于支持,我使用文本文件,因为它易于查看(检查正确)和编辑(修复它)

答案 3 :(得分:0)

This可能会回答您的问题。

我建议将文本文件设置为XML或JSON格式,以便于跨系统兼容。

序列化很棒,但如果您决定更改要序列化的对象,那么它会变得棘手。

如果您决定序列化,请确保为对象定义SERIAL_VERSION_UID。您可以更详细地了解它here

答案 4 :(得分:0)

无论如何我会创建课程书签。然后,我将使用方法serialize()deserialize()创建一个接口BookmarkSerializer。然后我可以创建我的第一个BookmarkSerializer实现。例如,它可能基于本机java序列化,纯文本,csv,xml等。所以,我可以选择一个,实现它,然后在我的应用程序中使用它。

当一个实现不能为我提供足够的服务时,我可以添加其他实现。关键是在这种情况下,除了序列化程序本身的初始化之外,我不必更改应用程序中的任何内容。

我认为在你的情况下,你应该从最简单的CSV实现开始,如果还不够,可以根据需要添加尽可能多的实现。