我有一个自定义的INIFile类,我写了包含字段下的字段的读/写INI文件。我有几个我想使用这个类来序列化的类,但是我对这样做最好的方式感到困惑。我考虑过两种可能的方法。手动对象序列化在Java中
方法1:定义像ObjectPersistent接口执行两种方法如下所示:
public interface ObjectPersistent
{
public void save(INIFile ini);
public void load(INIFile ini);
}
每个类将随后负责使用INIFILE类输出所有属性出到文件中。
方法2:公开的类需要串行化经由getter/setter方法的所有属性,以便保存可以在一个集中的地方进行处理,如下所示:
public void savePlayer(Player p)
{
INIFile i = new INIFile(p.getName() + ".ini");
i.put("general", "name", p.getName());
i.put("stats", "str", p.getSTR());
// and so on
}
方法1的最好的部分是,不是所有的属性需要暴露,所以封装牢固。方法1的坏处在于节省技术上并不是玩家会“做”的东西。它还通过传入方法的ini对象将我与平面文件联系起来,因此稍后切换到关系数据库将是一个巨大的痛苦。
方法2最好的部分是所有的I/O都集中到一个位置,而实际的保存过程对您来说是完全隐藏的。它可以保存到平面文件或数据库。方法2的坏处在于我必须完全公开类内部成员,以便集中式序列化器可以从类中获取所有数据。
我想尽可能保持简单。我更喜欢在不使用框架的情况下手动执行此操作。我也绝对不想使用Java中提供的内置序列化。有什么我在这里失踪?任何建议什么样的模式最适合这个,我将不胜感激。谢谢。
为什么你不想使用内置的序列化? – Bozho 2010-02-22 06:40:02
我希望文件易于阅读,因此可以在任何文本编辑器中进行更改。 – suinswofi 2010-02-22 07:07:23
为什么你不想使用库/框架? – Thilo 2010-02-22 07:57:11