Java common Try/Finally block around different code blocks - 代码风格

Java common Try/Finally block around different code blocks - code style

我有在 3 种方法中使用的 same if() { try { < SOME CODE > } finally { } } else {} 块。

每种方法唯一不同的是<一些代码>。

是否有任何编码模式可用于 "DRY" 我的代码?理想情况下希望将 if() { try { } finally { } } else {} 提取到一些通用结构并将 传递给它。在 Java 中可能吗?

谢谢

你可以引入一个公共的方法来提取公共部分。

然后根据你的要求你可以这样做:

1)如果3个方法在同一个class中:提取3个特定方法中try体的每组语句,并将此方法作为Runnable参数传递在常用方法中。
例如:

public void commonMethod(Runnable methodToInvoke){

     if() {
            try { methodToInvoke.run() } finally { } 
     } 
     else {}
}

并通过传递 3 个提取的方法来调用它:

commonMethod(this::methodFoo);
commonMethod(this::methodBar);
commonMethod(this::methodFooBar);

2) 如果这 3 个方法是不同的 classes :引入一个接口,这 3 个 classes 将实现并使通用方法接受该接口的参数。

例如引入了一个Processing界面:

public void commonMethod(Processing processing){

     if() {
            try { processing.doThat() } finally { } 
     } 
     else {}
}

并通过传递 Processing 接口的 3 个实现来调用它:

commonMethod(foo);
commonMethod(bar);
commonMethod(fooBar);