2011-04-12 28 views
0

在我的移動應用程序,我需要持有,可以在整個應用程序訪問和用戶可以通過收集進行各種操作的文件對象(圖片,文件)的集合:如何在整個應用程序中保存文件的集合?

  • 視圖中的所有/單個文件
  • 集合的子集上傳到服務器
  • 共享單個文件
  • ...

集合是初始化只有一次。

我想知道是否使用單例模式作爲持有集合的對象是一個好主意,所以我不必每次用戶打開特定的屏幕時初始化集合?

+0

這肯定是一個好主意。這樣你也可以避免通過varius UI類傳遞引用。 – 2011-04-12 10:36:46

+0

這可能是一個好主意。如果您以後認爲您可能只想將一部分文件傳遞給特定的對象,類或方法,則可能需要顯式傳遞對單例對象或其數據的引用,以便更輕鬆地實現未來前述的行爲。 – 2011-04-12 10:44:30

回答

1

當然,這是單身模式的目的。

Wikipedia,Singleton模式是

有用時恰好一個目的是協調跨越 系統的動作所需要 。

例子:

public class SingletonCollection { 

    private Collection<File> fileCollection; 
    private static SingletonCollection instance; 

    private SingletonCollection() { 
     fileCollection = new ArrayList<File>(); 
    } 

    public static SingletonCollection getInstance() { 
     if (instance == null) { 
      instance = new SingletonCollection(); 
     } 

     reutrn instance; 
    } 

    public void addFile(File f) { 
     fileCollection.add(f); 
    } 

    public Collection<File> getFiles() { 
     return fileCollection; 
    } 
} 
+0

謝謝你的提示,我將把它作爲一個單例來實現。 – Andy 2011-04-12 13:31:09

0

如果集合初始化一次,然後使用單。毫無疑問。

0

如果您使用的是Java ME,請嘗試RecordStore。您可以從應用程序的任何地方訪問它。

0

對於Java> = 1.5

public enum FileCollector 
{ 
    INSTANCE; 
    private FileCollector() 
    { 
     List _temp = new ArrayList(); 
     File f = new File("properties"); 
     _temp.add(f); 
     fileContainer = Collections.unmodifiableList(_temp); 
    } 

    private final Collection<File> fileContainer; 

    public Collection<File> getFiles() { 
     return fileContainer; 
    } 

} 
相關問題