Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在整个应用程序中保存文件集合?_Java_File_Singleton - Fatal编程技术网

Java 如何在整个应用程序中保存文件集合?

Java 如何在整个应用程序中保存文件集合?,java,file,singleton,Java,File,Singleton,在我的移动应用程序中,我需要保存一组文件对象(图片、文档),这些对象可以在整个应用程序中访问,用户可以对这些对象进行各种操作: 查看所有/单个文件 将集合的子集上载到服务器 共享单个文件 集合仅初始化一次 我想知道使用单例模式作为保存集合的对象是否是一个好主意,这样我就不必在用户每次打开特定屏幕时初始化集合了?当然,这就是单例模式的目的 从中,单例模式是 仅当一个对象处于活动状态时非常有用 需要跨部门协调行动 系统 例如: public class SingletonCollection

在我的移动应用程序中,我需要保存一组文件对象(图片、文档),这些对象可以在整个应用程序中访问,用户可以对这些对象进行各种操作:

  • 查看所有/单个文件
  • 将集合的子集上载到服务器
  • 共享单个文件
集合仅初始化一次


我想知道使用单例模式作为保存集合的对象是否是一个好主意,这样我就不必在用户每次打开特定屏幕时初始化集合了?

当然,这就是单例模式的目的

从中,单例模式是

仅当一个对象处于活动状态时非常有用 需要跨部门协调行动 系统

例如:

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;
    }
}
公共类单例集合{
私人收藏文件收藏;
私有静态SingletonCollection实例;
私人单音收集(){
fileCollection=newarraylist();
}
公共静态SingletonCollection getInstance(){
if(实例==null){
instance=new SingletonCollection();
}
reutrn实例;
}
公共无效添加文件(文件f){
fileCollection.add(f);
}
公共集合getFiles(){
返回文件收集;
}
}

如果集合只初始化一次,则使用singleton。毫无疑问

如果您使用的是Java ME,请尝试RecordStore。您可以从应用程序中的任何位置访问它

对于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;
    }

}
公共枚举文件收集器
{
实例;
私有文件收集器()
{
列表_temp=new ArrayList();
文件f=新文件(“属性”);
_温度添加(f);
fileContainer=集合。不可修改列表(_temp);
}
私有最终收集文件容器;
公共集合getFiles(){
返回文件容器;
}
}

这绝对是个好主意。这样也可以避免通过varius UI类传递引用,这可能是个好主意。如果您认为将来可能只想将文件的一个子集传递给特定的对象、类或方法,那么您可能希望显式地传递对singleton对象或其数据的引用,以便将来可以更轻松地实现上述行为。感谢您的提示,我将把它作为singleton实现。