2011-11-11 18 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); 
    } 
} 
相關問題