类作为静态变量的容器

时间:2016-04-21 07:33:57

标签: java android architecture

我正在使用Rest和观察者设计模式在android中做一个应用程序,当我执行Rest请求时,我会缓存响应但是这个响应对象的一些我想永久地让对象在内存中直到应用程序被销毁。 / p>

所以我一直在考虑创建一个只有公共静态变量的类(一些项目使用这种类来声明常量字符串)来设置它们然后我可以在内存中使用它。像这样:

public class Memory {

    public static HashMap<String, PersonDto> people;
    // This object could have another complex object as ArrayList or HashMap...
    public static LocationsDto locations;
    ...
}

我想知道这是否是一个不好的做法,做我想要解决的问题。

2 个答案:

答案 0 :(得分:1)

这取决于这些对象的用法。最重要的方面是:是否有可能同时修改/访问?如果是这样,那么你应该实现某种同步。

如果保证在访问这些对象之前构建这些对象,并且之后不会更改其状态,那么就同步问题而言,您的方法会很好。

例如,如果你的Dto对象是immutable并且不会同时修改hashmap,那么你就是安全的。如果hashmap需要支持并发访问/修改,那么请查看ConcurrentHashMap

答案 1 :(得分:1)

虽然它不是一种不好的做法,但它通常被视为具有全球可变状态的设计缺陷。你可以找到很多关于它为什么的信息。对我来说,最重要的缺点是可测试性和不可预测的程序状态问题。 如果您仍然要使用它,您还需要同步访问静态字段。