我有一个执行一些工作的 util 类。显然,它对扩展是封闭的,所有方法都是静态的。为简单起见,该类如下所示:
public final class Util {
private Util() { }
public static void doWork() {
// some work
int variable = help();
// some work uses variable
}
private static int help() {
// some helper functionality
}
}
该类具有doWork
执行大量计算的方法。顺便说一句,方法调用辅助方法help
来获取一些结果,其余代码使用help
方法返回的结果。
现在,在客户端代码中我想重用 method 的功能doWork
,但不是调用help
我想调用help2
method. 最简单的解决方案只是创建doWork2
替换help
为的方法help2
。
这是非常糟糕的方法,因为每个更改都doWork
必须在doWork2
其中一个中复制。这与模式非常相似Template Method
,但由于我们这里没有扩展,我们不能应用它。
我想出的最佳解决方案是向此方法添加参数,但保留所有现有用户doWork
:
public static void doWork() {
doWorkWithParameter(true);
}
public static void doWorkWithParameter(boolean helpOrHelp2) {
// some work
int variable = helpOrHelp2 ? help() : help2();
// some work uses variable
}
有哪些更好的设计方案可以用来解决这个问题?有没有办法像有一样实现灵活性Template Pattern
,但在应用程序类中。
提前致谢。