我有一个名为sThread()的方法。 想要重构mClass的sThread()方法的代码。
class SClass {
private Thread sThread;
public void sSubThread() {
initalize_sThread();
//some code
if (this.sThread != null) {
return;
}
}
}
所以我做了如下所示的更改 使用静态方法创建了一个名为SubscritpionThread的实用程序类。
class mClass {
// some code
public void sThread() {
SThread.sThreadStart();
}
}
class SThread {
private static Thread sThread;
private static void initalize_sThread() {
// some code
}
public static void sThreadStart() {
// some code
// changed this to classname
if (SThread.sThread != null) {
return;
}
}
}
这是正确的做法吗,请提出任何建议吗?
答案 0 :(得分:3)
静态字段(除非它们是最终的)非常皱眉,所以你要谨慎使用它们。
您的类mClass
具有实例字段和方法,然后您决定将线程上的某些操作分解为实用程序类。
您的实用程序类应该是无状态的,而不是依赖于静态字段,如果您需要全局变量,轻量级解决方案是创建单例,并在那里托管您的全局变量。
使用singleton也是皱眉(但不是随机静态字段),下一步是依赖注入框架,如guice,weld,spring(你的名字)。
底线是:尝试保持数据作用域,如果需要全局字段,请将其视为应用程序范围中的作用域字段。