考虑:
class C1 {
public static void doWork() {
// code fragment F1
doMoreWork();
// code fragment F2
}
private static void doMoreWork() {
// code fragment F3
}
}
class C2 {
public static void doWork() {
// code fragment F1
doMoreWork();
// code fragment F2
}
private static void doMoreWork() {
// code fragment F4
}
}
请注意,
doMoreWork
和C1
中的C2
具有不同的代码,但是doWork()
和C1
中的C2
相同。如何重构该类结构,以使对
C1.doWork()
和C2.doWork()
的调用与上述行为相同,但不会重复doWork()
的代码?编辑:请注意,重构后方法必须是静态的。
同样,片段F1和F2实际上是具有一个或多个开放上下文的代码片段-例如片段F1打开一个“ {”,而结尾的“}”位于片段F2中。
最佳答案
您可以创建另一个类C
,其中包含您不想重复的代码。
class C {
public static void f1() { /* code fragment F1 */ }
public static void f2() { /* code fragment F2 */ }
}
然后,您可以从
C
和C1
调用C2
的方法。class C1 {
public static void doWork() {
C.f1();
doMoreWork();
C.f2();
}
private static void doMoreWork() {
// code fragment F3
}
}
class C2 {
public static void doWork() {
C.f1();
doMoreWork();
C.f2();
}
private static void doMoreWork() {
// code fragment F4
}
}
关于java - 重构Java中的常见静态方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34667544/