在应用程序 class 与静态 class 中存储全局对象

Storing global objects in the Application class vs static class

这两种方法在这些变量的生命周期方面是否存在任何差异?

据我了解,在这两种情况下,当应用程序在

从内存中清除时,foo 会被垃圾收集

结束。 (正确吗?还是我遗漏了什么?)

选项 1:在应用程序中存储静态变量class:

public class App extends android.app.Application {
    private static SomeClass foo;

    public static init setSomeObject(SomeClass someValue){
       foo = someValue;
    }


    public static SomeClass getSomeObject(){
       return foo;
    }
}

选项 2:将静态变量字符串化为任何静态 class?

public class JustSomeClass {
    private static SomeClass foo;

        public static init setSomeObject(SomeClass someValue){
           foo = someValue;
        }

        public static SomeClass getSomeObject(){
           return foo;
        }
}

我更喜欢第二种,纯粹是为了更好的可读性,因为我不希望我的应用程序 class 变得太大,但我需要知道它是否有任何缺点。

从概念上讲,static 是良好 OO 设计中的异常。因此,当您询问最佳实践时,请首先考虑 not 使用 static 的设计。

除此之外:您的 类 应该类似于您打算构建的 "thing" 的 有用 模型。你不放 "stuff here ore there";你把它...从概念的角度放在它所属的地方。

我同意 GhostCat and Chetan。 我也觉得必须避免使用 static 以避免内存使用过多。

我更喜欢为每个进程制作一个单例 class,例如,处理我应用程序中的屏幕流或编写数据库操作的辅助方法或许多活动/片段使用的一些常用方法在我的应用程序中。

This link 对 Application class vs. Singleton 进行了很好的讨论。