您可以将所有静态字段替换为“上下文”对象,可以将其传递或创建为Singleton。可以删除几乎所有静态字段。这是否一个好主意取决于您,但是我不认为使用实例字段会更困难。
顺便说一句:我建议
- 将静态字段/常量与使用它们的类或包放置在一起
- 如果可能,将静态数组视为不可变的
final
。
您可以将非静态上下文用于
public class Context { public static final String PREF_UTILITY_FILE_NAME = "PrefUtilityFile"; public Facebook fb; public AsyncFacebookRunner fbAsyncRunner; public String[] fbPermissions = {"email", "read_stream", "user_birthday"}; public SharedPreferences prefs; public Editor editor; public String access_token; public long expires;}// pass to constructor as requiredclass UsesContext { final Context context; public UsesContext(Context context) { this.context = context; } public void method() { // can use context }}这使您可以创建具有多个上下文的单元测试。
我唯一要保持静态的是常量。



