我有一个需要重构的项目。它是一个 Java 桌面 SWT/JFace 应用程序,具有大约 40 个 GUI 组件,主要组件控制次要组件的生命周期。我想拥有低耦合的良好模块化设计,但是如果没有很长的构造函数,我找不到避免全局状态的方法。
例如,当前软件国际化的方法是这样的:
public class Main {
public static void main(String[] args) {
MyMessages.loadMessages();
}
}
public class MyMessages {
private static ResourceBundle messages;
public static void loadMessages() {
messagesBundle = ResourceBundle.getBundle("messages", "en");
}
public static void getMessage(String m) {
return messagesBundle.getString(m);
}
}
public class SomeComponent extends Component() {
public void init() {
String textboxLabel = MyMessages.getMessage("someMessage");
}
}
代码中的其他地方使用单例(用于数据模型),这使得随着代码库的增长很难分析依赖关系。
另一种方法是使MyMessages
有状态的并通过 GUI 组件的层次结构一直传递它的实例。对我来说,与感知到的好处相比,这似乎很混乱,容易出错并且不值得麻烦。
还有什么其他方法可以设计成这样:
- 不依赖于本质上是全局变量。
- 使依赖关系明确。
- 不会用冗长的构造函数弄乱代码。
我应该考虑依赖注入框架,还是有另一种对小型桌面应用程序来说似乎并不过分的方法?