有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

设计模式Java重构几乎相同的方法

我有一个类似这样的方法:

private void method(final Param one, final Param two) {
    Code Block
    CallToAnotherMethod() 
}

此方法从两个位置调用。在其中一个地方,我想按原样调用整个方法。其次,我只想执行Code Block,而不想执行CallToAnotherMethod()

我应该如何重构这个?用99%的相同代码实现两个方法看起来并不优雅

提前感谢您的建议


共 (2) 个答案

  1. # 1 楼答案

    如果对实际代码没有任何洞察,就很难正确判断它。与任何一般性问题一样,我们只能提供一般性答案

    private void method(final Param one, final Param two) {
        methodForCodeBlock(one, two);
        callToAnotherMethod() 
    }
    
    private void methodForCodeBlock(final Param one, final Param two) {
        // code block here
    }
    
    private void callToAnotherMethod() {
        ...
    }
    

    要仅执行代码块,请调用methodForCodeBlock(...)。要执行所有操作,请调用method(...)

  2. # 2 楼答案

    给你

    private void method(final Param one, final Param two) {
        codeBlockMethod() 
        CallToAnotherMethod() 
    }
    
    
    private void method2(final Param one, final Param two) {
        CallToAnotherMethod() 
    }
    
    private void codeBlockMethod() {
        Code Block
    }