2011-11-11 57 views
1

我需要保存我正在制作的程序的书签。书签是Xposition,Yposition和缩放。我应该只是将所有书签读写到文本文件,还是应该将它们放入一个Bookmarks对象中并对其进行序列化。我感兴趣哪一个会被认为是更好的面向对象设计。将用户数据保存在文本文件或序列化对象中

回答

0

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

当一个实现没有足够的服务我可以添加其他。关键是在这种情况下,除了初始化串行器本身之外,我不需要改变应用程序中的任何内容。

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

+0

我已经制作了书签对象,但是我正在计划一个返回要写入文本文件的字符串的getString()方法。看起来他们会以类似的方式工作,但这样我就可以为许多书签创建一个文本文件。 – Fractaly

+0

成功实施并且没有任何瑕疵(尚未完成) – Fractaly

0

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

为了便于支持,我用一个文本文件作为其易于查看(检查它右)和编辑(解决它)

+0

我想我会去的文本文件。精通技术的用户也可能更喜欢它。 thx – Fractaly

+1

我有我的CSV格式的数据文件,以便他们可以在电子表格应用程序中进行编辑。 –

0

This可能会回答你的问题。

我会推荐文本文件为XML或JSON格式,以便于跨系统兼容。

序列化很好,但如果你决定改变序列化的对象,就会变得棘手。

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

1

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

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); 
    } 
} 
相关问题