我需要保存我正在制作的程序的书签。书签是Xposition,Yposition和缩放。我应该只是将所有书签读写到文本文件,还是应该将它们放入一个Bookmarks对象中并对其进行序列化。我感兴趣哪一个会被认为是更好的面向对象设计。将用户数据保存在文本文件或序列化对象中
回答
无论如何,我会创建类书签。然后,我会创建一个接口BookmarkSerializer与方法serialize()
和deserialize()
。然后我可以创建我的BookmarkSerializer的第一个实现。例如,它可能基于本机Java序列化,纯文本,csv,xml等。所以,我可以选择一个,然后在我的应用程序中使用它。
当一个实现没有足够的服务我可以添加其他。关键是在这种情况下,除了初始化串行器本身之外,我不需要改变应用程序中的任何内容。
我认为在你的情况下,你应该从最简单的CSV实现开始,如果它不够,可以根据需要添加尽可能多的实现。
使用对象通常是最好的面向对象设计。
为了便于支持,我用一个文本文件作为其易于查看(检查它右)和编辑(解决它)
我想我会去的文本文件。精通技术的用户也可能更喜欢它。 thx – Fractaly
我有我的CSV格式的数据文件,以便他们可以在电子表格应用程序中进行编辑。 –
我建议保存到跨平台的文本文件。实际上它不是一个面向对象的考虑因素,因为当你使用文本文件方法时,你仍然可以在oo中进行编程,也就是说,具有文本文件源的数据访问对象不违反oo概念。
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);
}
}
- 1. 应用程序的配置保存到文件或对象序列化
- 2. 序列化,保存对象
- 3. 文件对象序列化
- 4. 将对象保存到数据库时,我应该序列化对象或保存每个属性
- 5. 如何序列化对象并将其保存到Android中的文件中?
- 6. R:将对象序列化为文本文件并返回
- 7. 将java对象序列化为文本文件
- 8. 用文本文件中的数据初始化对象数组
- 9. 如何将对象的模板化阵列保存到文件?
- 10. 将文本保存为文件或数据库效率更高?
- 11. 将序列化数据存储在Neo4j中的对象中
- 12. Hibernate的序列化/反序列化对象,并将其保存
- 13. C#使用streamreader从JSON文本文件读取数据并将其反序列化到对象列表中
- 14. 如何将iphone应用程序中的数据保存到文本文件并保存在文档中
- 15. 将数据从列表保存到文本文件
- 16. 使用javascript将数据保存到文本文件中
- 17. 将文本文件保存在数据库中并检索
- 18. 在文本文件中保存列表
- 19. 将数据保存在csv文件中
- 20. 将可序列化对象写入文件 - Google云存储
- 21. 将数据存储在文本文件或xml中
- 22. C#序列化:将类型为Action的对象保存到文件
- 23. 在PHP中将多个对象序列化为文件不能反序列化?
- 24. 从文本文件中读取数据并将其存储在对象中
- 25. 将HL7 CCD.xml文件反序列化为本地ClinicalDocument类对象
- 26. 将memcache数据保存到文件或数据库中
- 27. 如何在用户选择按钮时在文本文件中保存数据
- 28. 将对象列表序列化为java中的文件
- 29. 将datacontract序列化对象保存为字符串以保存在sql db中
- 30. Java大文件被保存在数据库中 - 对象设计
我已经制作了书签对象,但是我正在计划一个返回要写入文本文件的字符串的getString()方法。看起来他们会以类似的方式工作,但这样我就可以为许多书签创建一个文本文件。 – Fractaly
成功实施并且没有任何瑕疵(尚未完成) – Fractaly