考虑:

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
    }
}


请注意,doMoreWorkC1中的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 */ }
}


然后,您可以从CC1调用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/

10-11 20:42