我有一個自定義的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