我目前正在做一个需要重构的项目(它不是我写的,原始开发人员不在身边)。我在该应用程序中看到相当多的类只有私有构造函数和一个或多个静态方法(当前类对象的 getter/setter)。它们也有非静态方法。我举一个例子:
UndoManager 类管理应用程序执行撤消/重做的操作。它只有私有构造函数。加载应用程序时,会调用 UndoManager.setManager()。此方法从文件加载撤消历史记录或使用私有构造函数构造一个新的历史记录。
之后,每个类都可以使用同步的静态方法 .getManager() 访问 UndoManager 的这个实例。
在代码中:
public class UndoManager extends SimpleObservable<UndoManager> {
private static UndoManager instance;
private final Stack<Action> undoHistory;
private final Stack<Action> redoHistory;
public synchronized static void setManager(UndoManager undoManager) {
UndoManager instance = getManager();
instance.clear();
instance.undoHistory.addAll(undoManager.undoHistory);
instance.redoHistory.addAll(undoManager.redoHistory);
instance.notifyObservers(instance);
}
public synchronized static UndoManager getManager() {
if (instance == null)
instance = new UndoManager();
return instance;
}
private UndoManager() {
this.undoHistory = new Stack<Action>();
this.redoHistory = new Stack<Action>();
}
/.../
}
在这个应用程序中,多个类是这样使用的。它们不是辅助类,而是应该只有一个实例的类。
我的问题是:这种访问方式是否良好?如果不是,您将如何重构该类及其访问权限?
如果它是重复的,我很抱歉,但我已经在 stackoverflow 和谷歌搜索了一段时间,但不知何故我没有找到令人满意的答案。感谢您的任何帮助。